JavaScript 真·原型繼承

之前在學習“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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章