之前在学习“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()