此处说明https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function函数对象实例的构造函数属性“指定创建对象原型的函数”。这令人困惑,所以Object.constructor是“创建对象原型的函数”?究竟什么对象是“对象”?
我试图理解为什么 Object.constructor 的构造函数属性本身是?
像这样: Object.constructor===Object.constructor.constructor // 为什么?
编辑:我觉得 TJ Crowder 的回答很好,但他的话的措辞很模糊(至少对我来说,初读时很难理解)。这是改写后的答案:
1) Object是Function的一个实例
2) Object没有一个叫做constructor的属性,所以当我们调用Object.constructor时,它实际上给了我们Object.[[prototype]].constructor(又名Object.__ proto __.constructor)。
3) Object.constructor(又名Object.__ proto __.constructor)是Function的一个实例。
4)由于Object和Object.constructor(又名Object.__ proto __.constructor)都是Function的实例,因此它们都有一个__ proto __属性,它引用同一个对象。换句话说Object.__ proto __ === Object.constructor.__ proto __(又名Object.__ proto __.constructor._ proto _)
5) 行Object.constructor===Object.constructor.constructor实际上等于行Object.__ proto __.constructor===Object.constructor.__ proto __.constructor
6)结合步骤4和5给我们Object.constructor===Object.constructor.constructor
7) 转到步骤 4)