之前在學習“JavaScript 原型繼承”的時候,在網上搜了一堆,發現都不是我想要的結果,就想起來我之前在一本書上看到的原型繼承方法。(書名:《JavaScript 忍者祕籍(第二版)》,作者:John Resig, Bear Bibeault, Josip Maras)
原型繼承需要兩步:
第一步是把子類的原型設置爲父類的實例。但是這樣一來子類實例的 constructor 就指向父類了,所以需要手動修復一下子類的 constructor。
於是就有了第二步:通過 Object.defineProperty 方法來把子類的 constructor 修正爲子類。
以下是根據書中內容自己寫的:
function Person() {}
function Ninja() {}
Ninja.prototype = new Person()
Object.defineProperty(Ninja.prototype, 'constructor', {
enumerable: false,
value: Ninja,
writable: true
})
let ninja = new Ninja()