blog icon indicating copy to clipboard operation
blog copied to clipboard

JS深拷贝碰到的问题--后续

Open mishe opened this issue 7 years ago • 0 comments

上期 #155 讲了js 深拷贝的简单实现方法,还留了个尾巴,没有解决对象重复引用的问题

重复引用会有什么问题

例子1:

var obj={
a:1
}
obj.b=obj

例子2:

o1={a:1};o2={a:o1};o3={a:o2};o1.a=o3
}

这时去做深拷贝,会陷入无限递归。

怎么解决

对象本身就是树形结构,可以用一个数组来保存当前枝叶链上的所有object,如果下层枝叶又引用上层的obj,那就直接赋值,而不是采用递归,从而打破无限递归的深渊。

【具体实现代码】

mishe avatar Mar 20 '17 08:03 mishe