我不确定为什么会这样。
var a = {};
a.hello = a;
如果您在控制台中浏览对象,您将看到如下内容:
a.hello = a
是循环引用。似乎当我们分配a.hello = a
时,一切都会爆炸。有人可以解释内部发生的事情吗?
答案 0 :(得分:4)
你有一个对象。
该对象包含一个属性,该属性是指向同一对象的指针。
这就是全部。
从那里开始,您可以根据需要不断递归到a.hello.hello.hello.hello
,但您仍然只是引用相同的对象。也就是说,a.hello === a.hello.hello
适用于任何深度。
鉴于window
行为方式相同(window.window.window.window.MUSHROOM
),这不是一件好事,而且不会爆炸......#/ p>
答案 1 :(得分:3)
在处理对象时,JavaScript通过引用处理它们,而不是复制。所以循环结构没问题。