Javascript 为什么Object.\uuuuu proto\uuuu.\uuuuu proto\uuuu不为空?

Javascript 为什么Object.\uuuuu proto\uuuu.\uuuuu proto\uuuu不为空?,javascript,prototype,Javascript,Prototype,我的理解是对象。\uuuu proto\uuuu是javascript中的“顶级”原型对象。我希望它的\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu为空,但在谷歌浏览器(还没有尝试过其他浏览器)中,它不是空的。为什么呢 编辑 我知道下面的图片可能是对下面图片的重新哈希,但是我自己做的来检查我的理解。有什么问题吗? 我想你把对象.\uuuu proto\uuuu错当成了对象。prototype Object.prototype

我的理解是
对象。\uuuu proto\uuuu
是javascript中的“顶级”原型对象。我希望它的
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
为空,但在谷歌浏览器(还没有尝试过其他浏览器)中,它不是空的。为什么呢

编辑 我知道下面的图片可能是对下面图片的重新哈希,但是我自己做的来检查我的理解。有什么问题吗?

我想你把
对象.\uuuu proto\uuuu
错当成了
对象。prototype

Object.prototype.\uuuu-proto\uuu
确实为空,因为
Object
不扩展任何内容

对象
本身是一个函数-aka。
函数的实例

由于
函数
扩展了
对象
,因此它的原型具有
\uuuu proto\uuuu
属性。
因此,您可以绕道
对象。\uuuuu proto\uuuuuu.\uuuuu proto\uuuuu
到达
对象。prototype
,实际上:

Object.prototype === Object.__proto__.__proto__ // should yield true

Object
是一个函数,它的
\uuuuu proto\uuuuu
是一个空函数
function(){}
。根对象是空对象
{}
,而不是
对象
。因此,当您有一个类似
{foo:1,bar:1}
的对象时,其关系如下所示:


我基本上理解这个图表,但我有点困惑,为什么有两个实体命名为“函数/函数”和“对象/对象”。请你澄清一下好吗?没关系,我想我明白了。左上角的实体表示函数对象,右下角的实体表示使用函数创建的实例,对吗?此图像非常有用,并引发了更多的查询。谢谢。@jrahhali:你说得对,我上传了一个更好的图表。是的,我把Object.proto.和Object.prototype混淆了。谈论一段令人困惑的关系。谢谢我希望我能接受两个答案。