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 總結 優點 只呼叫一次父類的建構函式,避免了在子類原型中建立不必...