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這種類式繼承,對原型方法不起...