js的組合繼承

2021-07-22 16:37:40 字數 957 閱讀 8982

組合繼承也叫偽經典繼承,指將原型鏈的借用建構函式的技術組合到一起,發揮二者之長的一種繼承模式。思路是使用原型鏈實現對原型屬性和方法的繼承,而通過建構函式來實現例項繼承,這樣就既對原型上的方法實現了復用,又能保證每個例項獨特的屬性。

function supertype()

supertype.prototype.sayname=function();

function subtype(name,age)

//繼承方法

subtype.prototype=new supertype();

subtype.prototype.constructor=subtype;

subtype.prototype.sayage=function()

var instance1= new subtype("nick",29);

instance1.color.push("black");

alert(instance1.colors); //"red,blue,green,black"

instance1.sayname(); //"nick"

instance1.sayage(); //29

var instance2= new subtype("greg",27);

alert(instance2.colors); //"red,blue,green"

instance2.sayname(); //"greg"

instance2.sayage(); //27

首先給supertype定義了兩個屬性和在原型鏈上的乙個方法,然後讓subtype繼承name屬性和定義自己的age屬性,其次讓supertype的例項成為subtype的原型,進而繼承supertype的屬性和方法,所以整個繼承下來instance既有自己的屬性包括name,color,age,又有相同的方法sayname和sayage。

js組合繼承與寄生繼承

組合繼承 function parent parent,prototype.eat function function clild name 1 重寫原型物件,覆蓋之前的,需重新指向建構函式,2 第二次執行這個函式,避免了屬性共享 clild.prototype new parent clild.p...

JS繼承 寄生組合式繼承

1,原型式繼承 以乙個已有的物件為原型,創造乙個新的物件 function inheritobject o f.prototype o return new f 2,寄生式繼承 在原型式繼承的基礎上,為新的物件新增新的方法 function createobj proto return o 3,寄生...

JS組合繼承相比原型鏈繼承的優勢

原型繼承 父 建構函式 function father this.name foo this.family jack tom james father.prototype.sayname function console.log this.name father.prototype.sayfamil...