2

我一直在阅读 Mozilla JS Guide 中的以下文章。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create#Examples

使用 Object.create 为经典继承给出的示例中,我无法弄清楚为什么作者添加了以下行(第 21 行):

Rectangle.prototype.constructor = Rectangle;

经典继承是否需要它?请证明你的回答。

4

1 回答 1

3

从 ECMAScript-262 版本 5.1 开始,constructor 属性仅设置在函数对象上,请参见13.2 创建函数对象(步骤 17)

语言本身从不阅读或使用它。

尤其是,

obj instanceof C

不使用构造函数属性,也不使用

C.prototype.isPrototypeOf(obj)

因此,如果您不设计它,并且不使用使用它的框架,您可能会忽略构造函数属性。

如需进一步阅读,请参阅“构造函数”属性是什么

于 2013-09-15T19:04:15.550 回答