繼承的實現方式之 寄生式

2022-08-11 07:24:16 字數 675 閱讀 5990

基本模式

原型式繼承(prototypal inheritance)和工廠模式的結合,用乙個函式先建立以父類為原型的物件,再為這個物件新增需要的子類屬性及方法。最後直接返回這個物件。

function

object(o)

f.prototype =o;

return

newf();

}function

createtalkingobj(original)

return

clone;

}let person =

let personcantalk =createtalkingobj(person);

personcantalk.sayhi();

personcantalk.friends.push("mike");

console.log(person.friends);

需要注意的是,這種模式並沒有用到建構函式,繼承是直接發生在物件之間的,所有物件的constructor都是object。

所有物件共享一套屬性,如果改變子物件的非引用型別屬性的值,如 personcantalk.name = "talkingjack"; ,實際是在子物件上新建了name屬性,隱藏了父物件的屬性。如果改變的是引用型別的值,則父物件,以及其他所有共享這一套屬性的物件,都會被改變。

寄生式繼承

寄生式繼承是原型繼承密切相關的一種思路,寄生式繼承的思路與寄生建構函式和工廠模式類似,即建立乙個僅用於封裝繼承過程 的函式,該函式在內部以某種方式來增強物件,function object o f.prototype o f.name shalio function createanother or...

寄生式繼承

寄生式繼承是與原形式繼承緊密相關的一種思路,並且也是由克羅克福德推而廣之的。寄生式繼承的思路與寄生建構函式和工廠模式類似,即建立乙個僅用於封裝繼承過程的函式,該函式在內部以某種方式來增強物件,最後再像真的是他做了所有工作一樣返回物件,以下 示範了寄生式繼承模式 function createanot...

JavaScript 繼承 寄生式繼承

繼承 寄生式繼承 寄生式繼承是與原型式繼承緊密相關的一種思路。其思路與寄生建構函式和工廠模式類似,即建立乙個僅用於封裝繼承過程的函式 該函式在內部以某種方式來增強物件,最後再像真的是它做了所有工作一樣返回物件。寄生式模式如下例1所示 例1 function createanother origina...