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