blog
blog copied to clipboard
JS深拷贝碰到的问题--后续
上期 #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,那就直接赋值,而不是采用递归,从而打破无限递归的深渊。