首页 > 解决方案 > Javascript 对象的属性会自我保存并创建一个奇怪的循环

问题描述

我有一个对象(可以说a),它有一个属性(可以说b),它有一个属性,它是它的父级。像这样的东西:

a: {
    a1 : a2,
    b  : {
        b1 : b2,
        b3 : a
    }
}

它创建了一种奇怪的无限长对象,一次又一次地保存自己,我通过使用 chrome 的调试器发现了这一点。

但是我的问题是,尽管如此,程序永远不会崩溃并且运行得如此顺畅,没有任何挂起或其他东西,即使在非常糟糕的笔记本电脑(没有 GPU)上也是如此。该程序是如何做到这一点的?

标签: javascriptjavascript-objects

解决方案


a.b.b3是 的引用a,而不是副本,这就是在 JavaScript 中传递对象的方式。它相当于一个指针。一个对象可以被无限遍历的事实并不意味着它占用了无限量的内存。如果你想看到你正在处理内存中的同一个对象,你可以做类似的事情a.b1 = 'something else';并再次尝试遍历它。即使您深入层次结构,更改也会反映出来,因为您正在访问内存中的同一个对象。


推荐阅读