JS中原型链末端循环链异常

问题描述 投票:0回答:1

我在 JS 中观察到一些奇怪的事情。如果我执行以下操作:

console.log(Object.getPrototypeOf({});

以上指向

Object.prototype
。检查:

console.log(Object.getPrototypeOf({}) === Object.prototype) //true

我们知道Prototype链的终点是

null
,这意味着
Object.prototype.__proto__
应该是
null
,它是:

console.log(Object.getPrototypeOf(Object.getPrototypeOf({}))); //null

如果上述情况成立,那么为什么浏览器控制台会显示原型链末端存在循环链呢?看看下面的图片:

上图中,为什么红框中的

__proto__
又指向
Object.prototype
?为什么这不是
null
?还有为什么
__proto__
__proto__
在红框里
null
呢? 我在 Chrome 和 Edge 上尝试过这个。结果相同。

谢谢你。

javascript prototype prototypal-inheritance prototype-programming prototype-chain
1个回答
0
投票

没有循环链。前 2 个

Object
是相同的。所以第一个显示为
{}
的原型。
__proto__
属性是此原型的来源。

console.log(Object.getPrototypeOf({}) === {}.__proto__);

© www.soinside.com 2019 - 2024. All rights reserved.