Javascript对象的属性保存自身并创建怪异的循环

时间:2019-01-24 18:20:46

标签: javascript javascript-objects

我有一个对象(让我们说- module(equals). - export([Duplicates/3]). Duplicates(X,Y,Z)-> List=[X,Y,Z], A=length(List), List2=lists:usort(List), B=length(List2), if A-B==0 -> 0; true -> A-B+1 end. ),它有一个属性(让我们说a),它的属性是它的父对象。像这样:

b

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

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

1 个答案:

答案 0 :(得分:1)

a.b.b3a的引用,而不是副本,这是对象在JavaScript中传递的方式。它等效于指针。可以无限遍历一个对象的事实并不意味着它占用了无限量的内存。如果要查看正在处理内存中的同一对象,可以执行类似a.b1 = 'something else';的操作,然后尝试再次遍历该对象。即使您深入层次结构,更改也将得到反映,因为您要遍历内存中的同一对象。