JavaScript繼承總結

2021-09-13 09:07:14 字數 1934 閱讀 1335

1.字面量物件

2.建構函式

3.object.create

//1.字面量

var obj=

}//2.建構函式

function fun (name)

var obj=new fun('obj')

var obj=

var obj=object.create(obj)

1.原型鏈繼承
function parent(name)

}parent.prototype.eat=function(food)

function child(){}

child.prototype=new parent('child')

child.prototype.constructor=child

var child=new child()

child.prototype=new parent('child')就是把parent例項賦值給child.prototype,也就是說new child().__proto__===new parent('child')

可以通過child.prototype在原型物件上增加新的屬性或方法,也可以通過,child.__proto__在原型物件上新增新的方法和屬性。

缺點:1.原型物件上的屬性和方法是所有例項都可訪問的,而且乙個例項改變了原型上的方法和屬性都會影響到其他例項。

2.建立子類例項時,無法向父類建構函式傳參。

2.建構函式繼承

function parent(name)

}parent.prototype.eat=function(food)

function child()

child.prototype.eyes=function()

var child=new child()

3.組合繼承
function parent(name)

}parent.prototype.eat=function(food)

function child()

child.prototype.eyes=function()

child.prototype=new parent()

child.prototype.constructor=child

var child=new child()

組合繼承是比較好的繼承, 他是原型鏈繼承和建構函式繼承的結合, 合理的利用了這兩種組合的特點,既是子類的例項,也是父類的例項, 但有乙個缺點就是呼叫了兩次建構函式。

4.組合繼承優化

function parent(name)

}parent.prototype.eat=function(food)

function child()

child.prototype = object.create(parent.prototype)

child.prototype.constructor=child

var child=new child()

5.寄生組合繼承
function parent(name)

}parent.prototype.eat=function(food)

function child()

function f(){}

f.prototype=parent.prototype

child.prototype=new f()

child.prototype.constructor=child

var child=new child()

只呼叫一次父類的建構函式,避免了在子類原型上建立不必要的,多餘的屬性。

javascript繼承的個人總結

開始的 是這樣的 var animal function name animal.prototype.jump function 優點 將可共享的可重用的部分 屬性或者方法 遷移到原型鏈上,將不可重用的部分作為物件的例項屬性 屬性 var human function name 這一步會使得 hum...

JavaScript 繼承 組合繼承

繼承 組合繼承 組合繼承也叫做偽經典繼承,指的是將原型鏈和借用建構函式的技術組合到一塊,從而發揮二者之長的一種繼承模式。組合繼承的基本思路是使用原型鏈實現對原型屬性和和方法的繼承,而通過借用建構函式來實現對例項屬性的繼承。組合繼承通過在原型上定義方法實現了函式復用,又能夠保證每個例項都有它自己的屬性...

javascript繼承機制

一 call 在子類中,用父類.call this,arg0,arg1,arg2.可以繼承父類。注意call的位置,盡量在子類的第一行 js按順序執行,放在後面可能對子類的其它屬性 方法有影響。比如子類和父類有相同名字的方法,後面的覆蓋前面的 馬上 分析 單純使用call這種類式繼承,對原型方法不起...