關於js繼承

2021-08-29 01:48:51 字數 1547 閱讀 2395

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 ...