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混淆了。谈论一段令人困惑的关系。谢谢我希望我能接受两个答案。