这里https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function函数对象实例的构造函数属性“指定创建对象原型的函数”。这让人困惑,所以Object.constructor是“创建对象原型的函数”吗?“对象”到底是什么?
我试图理解为什么Object.Constructor的构造函数属性本身就是?
因此: Object.constructor===Object.constructor.constructor //为什么?
编辑:我觉得T.J.克劳德的回答很好,但他的话措辞很模糊(至少对我来说,一开始就很难理解)。以下是改写后的答案:
1) 对象是函数的一个实例。
2) Object.constructor,对象没有一个名为构造函数的属性,所以当我们调用时,它实际上给了我们Object.[prototype].constructor (又名Object.__proto__.constructor). )
3) Object.constructor (又名Object.__proto__.constructor) )是函数的一个实例。
4)由于Object.constructor和对象(又名Object.__proto__.constructor) )都是函数的实例,因此它们都具有引用同一个对象的__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步)
发布于 2011-05-11 11:38:49
因为Object是一个Function,而Function构造函数是一个Function,所以它的构造函数本身。
“对象”是面向对象编程的基本组成部分。Object,在JavaScript中,是一个构造函数(如Date或RegExp)。它的工作是通过new关键字初始化解释器创建的对象的新实例。
这可能是非主题的,也可能不是,因为您询问的是构造函数:
JavaScript中的任何函数都可以是构造函数;这完全取决于您如何使用它。考虑:
function Foo() {
}如果我这么叫:
var f = Foo();.它只是一个无聊的旧函数,f接收undefined (因为Foo什么都不返回)。但如果我这么说的话
var f = new Foo();.我用它作为构造函数,更有趣的事情发生了:
解释器创建一个新的空白对象。解释器将新对象的底层原型设置为Foo.prototype.
Foo,使this引用新对象。当Foo完成时,如果Foo不返回值(或不返回对象),则new表达式的结果是在步骤1中创建的对象。(如果Foo返回对象,则使用该对象;这是大多数人不需要做的高级事情。)发布于 2011-05-11 11:47:08
JavaScript对象布局

https://stackoverflow.com/questions/5963547
复制相似问题