JS繼承 寄生組合式繼承

2021-08-01 09:39:11 字數 963 閱讀 5757

//1, 原型式繼承: 以乙個已有的物件為原型,創造乙個新的物件

function

inheritobject

(o)

f.prototype=o;

return

new f();

}//2, 寄生式繼承: 在原型式繼承的基礎上, 為新的物件新增新的方法

function

createobj

(proto)

return o;

}//3, 寄生組合式繼承: 在子類和父類中間新增一層次,

//比如該層次的物件為p, p的原型指向父類的原型,子類的原型指向p,

//p的建構函式指向子類.

function

inheritproto

(subclass,superclass)

//4,缺陷

//因為寄生組合繼承只是解決了繼承鏈的問題,

//沒有解決例項屬性的問題,

//所以在子類建構函式中,需要用建構函式式繼承,解決例項屬性繼承的問題

//5, 測試用例

function

superclass

(name)

superclass.prototype.showcolors=function

() function

subclass

(name,time)

var instance1=new subclass("sub1","2014");

var instance2=new subclass("sub2","2015");

instance1.colors.push("yellow");

instance2.colors.push("gray");

console.log(instance1);

console.log(instance2);

組合繼承與寄生組合式繼承

組合繼承 將原型鏈和借用建構函式的技術組合到一塊。使用原型鏈實現對原型屬性和方法的繼承,而通過借用建構函式來實現對例項屬性的繼承。超類的屬性被繼承了兩次,一次是在子類的建構函式中,使得子類例項擁有各自的屬性 一次是在子類的原型中,使得子類擁有相同的屬性。1 function supertype na...

例項 寄生組合式繼承

寄生組合式繼承 寄生組合式繼承的基本思想是什麼?有哪些優缺點 寄生組合式繼承的基本思想是為了解決組合繼承的缺點,組合繼承呼叫了兩次父類建構函式,生成了兩個例項屬性,只不過例項上的覆蓋了原型上的屬性。用了寄生式繼承的方法,將子類原型指向父類原型,一般是object.create 與 object.se...

詳談 寄生組合式繼承

所謂寄生組合式繼承,即通過借用建構函式來繼承屬性,通過原型鏈的混成形式來繼承方法 不必為了指定子型別的原型而呼叫超型別的建構函式,我們需要的僅是超型別原型的乙個副本,本質上就是使用寄生式繼承來繼承超型別的原型,然後再將結果指定給子型別的原型。寄生組合式繼承的基本模式如下所示 function inh...