我的理解是Object.__proto__
是javascript中的'顶级'原型对象。我希望它的__proto__
为空,但在谷歌浏览器中(没有尝试过其他浏览器),事实并非如此。那是为什么?
答案 0 :(得分:6)
Object
是一个函数,__proto__
是一个空函数function() {}
。根对象是空对象{}
,而不是Object
。所以,当你有一个像{foo:1, bar:1}
这样的对象时,它的关系就像这样:
答案 1 :(得分:5)
我认为您错误地将Object.__proto__
误认为Object.prototype
。
Object.prototype.__proto__
确实为空,因为Object
并未扩展任何内容。
Object
本身就是一个功能 - 又名。 Function
的实例
由于Function
扩展了Object
,因此它的原型具有__proto__
属性。
因此,您可以绕过Object.__proto__.__proto__
到达Object.prototype
,事实上:
Object.prototype === Object.__proto__.__proto__ // should yield true