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