function box(_f)
// 這樣直接將原型指向乙個物件,會將原有的constructor覆蓋
box.prototype=
};// 因此這裡我們使用定義屬性,重新穿件這個constructor的指向
object.defineproperty(box.prototype,"constructor",);
function extend(subclass,supclass)
f.prototype=supclass.prototype;
subclass.prototype=new f();
object.defineproperty(subclass.prototype,"constructor",);
subclass.prototype.superclass=supclass.prototype;
if(supclass.prototype.constructor===object) );}}
function ball(_f)
// es6中 extends box
extend(ball,box);
// ball.prototype=
// 給原型上新增新的屬性
object.assign(ball.prototype,,
// 覆蓋父類的方法
b:function()
})var c=new ball(5);
console.log(c);
c.b();
組合繼承和寄生式組合繼承
組合繼承綜合了原型鏈和盜用建構函式,解決了原型內引用值共享的問題,以及子類在例項化時不能給父類建構函式傳參的問題。缺點 呼叫了兩次父類建構函式影響效率,而且子類的原型物件上也擁有了不必要也用不上的屬性,即父類建構函式的例項屬性。這樣的話子類的例項物件如果刪除某個屬性,這個屬性仍然可以訪問到,因為它可...
物件導向繼承 寄生式組合繼承
2.子類建構函式 function ministudent name,age,混合繼承 物件冒充 建構函式中屬性和方法 原型鏈繼承 繼承原型物件中屬性和方法 4.原型鏈繼承 object.create 以原型為基礎建立物件 ministudent.prototype object.create st...
寄生組合繼承
核心 通過寄生方式,砍掉父類的例項屬性,這樣,在呼叫兩次父類的構造的時候,就不會初始化兩次例項方法 屬性,避免的組合繼承的缺點 既然要實現繼承定義乙個父類 定義乙個動物類 function animal name super.prototype animal.prototype 例項作為子類的原型 ...