javascript - Javascript 对象的属性会自我保存并创建一个奇怪的循环
问题描述
我有一个对象(可以说a
),它有一个属性(可以说b
),它有一个属性,它是它的父级。像这样的东西:
a: {
a1 : a2,
b : {
b1 : b2,
b3 : a
}
}
它创建了一种奇怪的无限长对象,一次又一次地保存自己,我通过使用 chrome 的调试器发现了这一点。
但是我的问题是,尽管如此,程序永远不会崩溃并且运行得如此顺畅,没有任何挂起或其他东西,即使在非常糟糕的笔记本电脑(没有 GPU)上也是如此。该程序是如何做到这一点的?
解决方案
a.b.b3
是 的引用a
,而不是副本,这就是在 JavaScript 中传递对象的方式。它相当于一个指针。一个对象可以被无限遍历的事实并不意味着它占用了无限量的内存。如果你想看到你正在处理内存中的同一个对象,你可以做类似的事情a.b1 = 'something else';
并再次尝试遍历它。即使您深入层次结构,更改也会反映出来,因为您正在访问内存中的同一个对象。
推荐阅读
- mysql - 如何从下表中获取结果
- java - 访问资源文件夹中的文件
- sql - 如何确定 Presto 中一个月的天数?
- laravel - Laravel:检索关系数据
- angular - Angular 7从promise返回字符串
- r - 如何用文本和点注释 R 地图
- sdk - Sap Cloud SDK - 使用自定义字段创建 BP
- python - 如何使用 python 为在 Direct Runner 上运行的 apache 光束管道设置日志/打印
- taleo - 如何使用 Taleo Connect 客户端基于 csv 文件提取数据?
- javascript - 如何使用带有 jQuery 的 nextUntil 包含选择的第一个元素