1.//建構函式實現繼承,缺點:無法繼承父類原型鏈上的屬性和方法
// 父類
function parent1()
parent.prototype.say = function()
// 子類
function child1 ()
2.// 原型鏈實現繼承,子類例項化的物件屬性會相互影響
// 父類
function parent2()
// 子類
function child2 ()
child2.prototype = new parent2();
let obj1 = new child2();
let obj2 = new child2();
obj1.play.push('5')
//此時,obj1和obj2的play屬性值會一起改變,因為obj1.__proto === obj2.__proto__
// 組合方式繼承,缺點執行父類建構函式次數過多
//父類
function parent3 ()
//子類
function child3 ()
child3.prototype = new parent3();
let obj1 = new child3();
let obj2 = new child3()
obj1.play.push('hah');
obj1 instanceof child3 // true
obj1 instanceof parent3 // true
obj1.constructor // parent
//優化組合方式繼承,缺點例項化物件不僅是子類的例項,也是父類的例項
//父類
function parent4 ()
//子類
function child4 ()
child3.prototype = parent4.prototype;
let obj1 = new child4();
let obj2 = new child4()
obj1.play.push('hah');
//組合方式繼承優化,繼承最優方法
//父類
function parent5 ()
//子類
function child5 ()
child5.prototype = object.create(parent5.prototype);
child5.prototype.constructor = child5;
let obj = new child5();
obj instanceof child5; // true
obj instanceof parent5; // true
obj.constructor // child5
關於js原型繼承
js的每個類都有乙個prototype物件 訪問物件的屬性時,會先訪問到物件自身是否有定義這個屬性 如果沒有定義,就會去訪問物件所屬型別的prototype物件是否有此屬性 原型繼承就是把型別的prototype指向乙個父類的新物件,這樣每派生乙個新類出來都會構造乙個新的父類物件作為原型,這個物件和...
JS關於繼承的總結
方法一通過原型鏈 grandfather.prototype.lastname 劉 function grandfather var grandfather newgrandfather father.prototype grandfather function father var father ...
關於JS中的繼承(一)
首先我們要知道什麼是類的繼承?其實就是子類繼承父類中的一些屬性和方法。在js中實現繼承有多種方式,有原型繼承 call繼承 寄生組合繼承 es6中的類以及繼承等幾種方式。接下來,我將一一介紹每一種繼承方式。所謂原型繼承,指的是讓子類的原型指向父類的例項 children.prototype new ...