我不确定为什么这个有效。 var a = {}; a.hello = a; 如果您在控制台中探索对象,您会看到类似于这样的内容:。 a.hello = a 是一个循环引用。当我们赋值 a.hello = a 时,一切似乎都会崩溃。有人能解释一下内部发生了什么吗?
你有一个单一的对象。该对象包含一个属性,该属性是指向同一对象的指针。就是这样。从那里开始,你可以不断地递归到a.hello.hello.hello.hello,但你仍然只是引用同一个对象。也就是说,无论深度如何,a.hello === a.hello.hello。考虑到window的行为方式相同(window.window.window.window.MUSHROOM),它不会“爆炸”也是一件好事!