是否需要在经典继承中更改子类的“原型.构造函数”

Is it required to change the "prototype.constructor" of sub class in classical inheritance

本文关键字:子类 原型 构造函数 经典 继承 是否      更新时间:2023-09-26

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

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

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

Rectangle.prototype.constructor = Rectangle;

经典继承需要吗?请证明您的答案。

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

它永远不会被语言本身阅读或使用。

特别

obj instanceof C
不使用构造函数属性

,也不使用构造函数属性

C.prototype.isPrototypeOf(obj)

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

有关进一步阅读,请参阅"构造函数"属性是怎么回事