js的繼承實現(ES5,ES6)

2021-09-19 09:11:56 字數 769 閱讀 3497

es5:通過原型鏈實現繼承

通過原型實現繼承,最簡單的方法就是

subclass.prototype = new superclass()
但是這種方式有乙個弊端,就是會丟失subclass.prototype上的原有constructor

constructor 屬性是建立例項物件的函式的引用,我們可以通過constructor屬性驗證例項的原始屬性

通過subclass.prototype.constructor = subclass可以解決,但是這樣也有問題

這樣會導致subclass.prototype上所有屬性都是可列舉的,包括constructor

所以要用object.defineproperties()進一步優化

操作如下:

object.defineproperty(subclass.prototype,"constructor",)
配置物件的屬性api object.defineproperty()參考

es6:通過class實現繼承

class person()

}class ninja extends person

// 每個例項均可訪問的方法

swingsword()

// 靜態方法

static compare(ninja1, ninja2)

}

ES5 ES6 實現繼承

function parent value parent.prototype.getvalue function function child value child.prototype new parent const child new child 1 child.getvalue 1我們來研究...

es5 es6 繼承總結

一 原型鏈繼承 原型鏈繼承的原理 直接讓子類的原型物件指向父類例項,當子類例項找不到對應的屬性和方法時,就會往它的原型物件,也就是父類例項上找,從而實現對父類的屬性和方法的繼承。父類 function fat 父類上的原型方法 fat.prototype.getname function 子類 fu...

ES5,ES6中的繼承

es5中的繼承 1,借助建構函式實現繼承 只能實現部分繼承 原理 通過call 函式改變this指向,將父類屬性掛載到子類例項中 function parent function child console.log new child 總結 優點 只呼叫一次父類的建構函式,避免了在子類原型中建立不必...