是否需要在经典继承中更改子类的“prototype.constructor”

时间:2013-09-15 14:06:24

标签: javascript inheritance prototypal-inheritance

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

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

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

Rectangle.prototype.constructor = Rectangle;

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

1 个答案:

答案 0 :(得分:3)

从ECMAScript-262 Edition 5.1开始,构造函数属性仅在函数对象上设置, 参见 13.2创建功能对象(步骤17)

语言本身永远无法读取或使用。

特别是

obj instanceof C

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

C.prototype.isPrototypeOf(obj)

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

如需进一步阅读,请参阅What’s up with the “constructor” property