在JavaScript中,当我定义一个新函数
时function Foo () { /* code */ }
此函数的原型设置为一个新对象,该对象的constructor
设置为新创建的函数本身,所以
Foo.prototype.constructor === Foo
这种行为在ECMAScript规范中以及更人性化的MDN都有详细描述。
这个属性是否只是用于获取构造函数的友好快捷方式?
例如,如果我要
delete Object.prototype.constructor
(我可以,因为,至少在Node.js中,属性被定义为可写和可配置),我在某种程度上影响了语言'的功能?
经过一些基本测试后,它似乎不会影响定义创建新对象,因为为我创建的每个新函数/对象正确定义了属性。
注意:我知道这可能会破坏第三方代码 - 我只对核心语言的功能感兴趣。