我有一个对象(让我们说- 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)上,程序也不会崩溃并且运行得如此流畅,没有任何挂起或任何东西。程序如何做到这一点?
答案 0 :(得分:1)
a.b.b3
是a
的引用,而不是副本,这是对象在JavaScript中传递的方式。它等效于指针。可以无限遍历一个对象的事实并不意味着它占用了无限量的内存。如果要查看正在处理内存中的同一对象,可以执行类似a.b1 = 'something else';
的操作,然后尝试再次遍历该对象。即使您深入层次结构,更改也将得到反映,因为您要遍历内存中的同一对象。