之前在学习“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()
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。