JS最常用的繼承方式 組合繼承(偽經典繼承)

2021-09-25 12:34:53 字數 1021 閱讀 2962

組合繼承有時候也叫做為經典繼承,指的是將原型鏈和借用建構函式的技術組合到一起,發揮二者之長。背後的思路是使用原型鏈實現方式對原型屬性和方法的繼承,而借用建構函式來實現對例項屬性的繼承。

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...