2012-12-10 35 views
4

为什么Object.__proto__ === Function.__proto__在JavaScript?为什么Object .__ proto__等于Function .__ proto__?

什么是这样设计的目的是什么?

+0

@MattBall它将被标准化。 [来源](http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts)。 – alex

+0

@MattBall无论如何都是正确的。目前这不是规范。它将与ECMAscript版本6配合使用。 – jAndy

+0

这个问题可以使用Object.getPrototypeOf(Object),它的意图是一样的。 '__proto__'没有标准化的事实是无关紧要的。 –

回答

3

对象的__proto__ property表明该对象继承原型。

由于ObjectFunction都是功能,它们都具有相同的原型。

+3

而要更清楚一点,这是因为您正在查看构造函数Object.prototype与Function.prototype不同,它们分别等于普通对象和函数的'__proto__'属性。 – hugomg

+1

@ missingno - 另一种说法,因为一个函数,它们的内部'[[Prototype]]'引用同一个对象,即'Function.prototype'。 – RobG

+0

如果'[[Prototype]]'/'__proto__'和'.prototype'没有共享同一个名字,这个讨论将会有所帮助。 –

相关问题