組合繼承有時候也叫做為經典繼承,指的是將原型鏈和借用建構函式的技術組合到一起,發揮二者之長。背後的思路是使用原型鏈實現方式對原型屬性和方法的繼承,而借用建構函式來實現對例項屬性的繼承。
function
supertype
(name)
supertype.prototype.
sayname
=function()
function
subtype
(name,age)
//繼承方法
subtype.prototype =
newsupertype()
; subtype.prototype.constructor = subtype;
subtype.prototype.
sayage
=function()
;var instance1 =
newsubtype
("這裡是instance1",29
);instance1.colors.
push
("black");
//新增color
console.
log(instance1.colors)
; instance1.
sayname()
; instance1.
sayage()
;var instance2 =
newsubtype
("這裡是instance2",30
);console.
log(instance2.colors)
; instance2.
sayname()
; instance2.
sayage()
;
控制台會輸出
這樣就可以讓兩個不同的subtype例項分別擁有自己的屬性,包括color屬性,還能夠使用相同的方法
JS實現繼承之最常用的組合繼承
使用建構函式方法和原型鏈方法都不能很好的實現繼承,他們各有優勢,也各有劣勢,如果把他們組合在一起,是不是可以各取所長,取長補短呢?答案是可以的,這就是組合繼承 function person skin person.prototype.run function function chinese na...
js的組合繼承
組合繼承也叫偽經典繼承,指將原型鏈的借用建構函式的技術組合到一起,發揮二者之長的一種繼承模式。思路是使用原型鏈實現對原型屬性和方法的繼承,而通過建構函式來實現例項繼承,這樣就既對原型上的方法實現了復用,又能保證每個例項獨特的屬性。function supertype supertype.protot...
js組合繼承與寄生繼承
組合繼承 function parent parent,prototype.eat function function clild name 1 重寫原型物件,覆蓋之前的,需重新指向建構函式,2 第二次執行這個函式,避免了屬性共享 clild.prototype new parent clild.p...