前端繼承的幾種方法

2021-10-06 15:23:32 字數 1933 閱讀 7859

function

person()

function

child()

//關鍵**

child.prototype =

newperson()

;child.prototype.constructor = child;

var child =

newchild()

;child.hobby .

push

('跑步');

var child2 =

newchild()

;console.

log(child2.hobby )

//['唱歌','踢球','跑步']

總結:缺點不能傳遞引數,2,如果父類的屬性是引用型別,子類實列修改了該屬性,其他的子類實列會會共享該屬性。

//父類

function

person

(name)

person.prototype.

eat=

function()

//子類

function

child

(age,name)

//實列

var child1 =

newchild

('11'

,'wucr');

child1.

push

('學習'

)console.

log(child1.hobby )

// ['唱歌','踢球','跑步','學習']

var child2 =

newchild

('11'

,'wucr');

console.

log(child2.hobby )

// ['唱歌','踢球','跑步']

借用建構函式有缺點總結:

缺點:1,子類無法繼承父類在原型鏈上的屬性和方法。2,每個例項都拷貝乙份,占用記憶體大,尤其是方法過多的時候。(函式復用又無從談起了,本來我們用 prototype 就是解決復用問題的)

優點:解決了通過原型鏈繼承子類對於父類引用型別屬性的修改,導致其他子類實列共享了修改的問題組合繼承(原型鏈繼承+借用建構函式繼承)由於這兩種繼承方式都存在各自的優缺點,從而將他們優點結合起來,通過原型繼承父類原型上的屬性和方法,通過建構函式的方法繼承父類的屬性

function

person

(name)

person.prototype.

eat=

function()

//子類

function

child

(age,name)

child.prototype =

newperson()

;// 原型鏈

child.prototype.constructor = child;

缺點:組合繼承是js最常用的繼承模式,組合繼承最大的問題就是無論在什麼情況下,都會呼叫兩次建構函式:一次是在建立子型別原型時,另一次是在子類建構函式內部。

寄生組合繼承就是避免兩次呼叫父類建構函式,通過賦值直接繼承父類的原型

function

person

(name)

person.prototype.

eat=

function()

//子類

function

child

(age,name)

var proobj = object.

create

(person.prototype)

;proobj.constructor = child;

child.prototype = proobj;

寄生組合繼承是開發中比較常用的繼承方法

javascript繼承的幾種方法

理解鏈結 1,簡單原型鏈 function super function sub sub.prototype new super 核心 var sub1 new sub var sub2 new sub sub1.val 2 sub1.arr.push 2 alert sub1.val 2 aler...

js繼承的幾種方法

繼承的幾種方法 1.傳統形式 繼承過多沒用的東西 father.prototype.name hzl function father var father new father son.prototype father function son var son new son console.log...

JS實現繼承的幾種方法

call方法的第乙個引數的值賦值給類 即方法 中出現的 this call方法的第二個引數開始依次賦值給類 即方法 所接受的引數 call 相同,第二個引數為陣列型別,這個陣列中的每個元素依次賦值給類 即方法 所接受的引數 this 的指向,我們就是利用它的這個特性來實現繼承的。補充知識點 func...