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

后脑勺
23 声望1 粉丝

一只有追求、有梦想、喜欢写出漂亮代码的程序猿儿