首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Object.__proto__.__proto__不为空?

为什么Object.__proto__.__proto__不为空?
EN

Stack Overflow用户
提问于 2015-07-29 16:52:27
回答 2查看 782关注 0票数 8

我的理解是,Object.__proto__是javascript中的“顶级”原型对象。我希望它的__proto__是空的,但是在Google (还没有尝试过其他浏览器)中,它不是。为什么呢?

编辑

我知道下面的图片可能是下面这张的重新散列,但我自己做的,是为了检查我的理解。有什么问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-29 17:05:28

Object是一个函数,__proto__是一个空函数function() {}。根对象是一个空对象{},而不是Object。因此,当您有一个像{foo:1, bar:1}这样的对象时,它的关系如下所示:

票数 6
EN

Stack Overflow用户

发布于 2015-07-29 17:04:40

我想你把Object.__proto__误认为是Object.prototype

Object.prototype.__proto__确实是空的,因为Object没有扩展任何东西。

然而,Object本身就是一个函数--又名。Function的一个实例。

由于Function扩展了Object,所以它的原型具有一个__proto__属性。

因此,您可以在Object.__proto__.__proto__上空绕道到达Object.prototype,实际上:

代码语言:javascript
复制
Object.prototype === Object.__proto__.__proto__ // should yield true
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31706576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档