Angular JS:当对象引用另一个对象时,angular.copy会使浏览器崩溃

时间:2013-05-09 13:52:24

标签: angularjs deep-copy

我有以下JavaScript / Angular代码:

var a = {};
var b = {};
a.ref = b;
b.ref = a;
angular.copy(a);

angular.copy触发时,浏览器会锁定。我假设这是因为复制功能正在进行深层复制,当它开始复制b的b的引用时,它会进入b然后想要复制其对a的引用,从而创建一个圆形副本,永远不会结束。

这个假设是对的吗?如果是这样,有没有办法避免这种情况?我假设答案将涉及改变数据的外观,但我很想听听别人的想法。

2 个答案:

答案 0 :(得分:2)

你的假设是对的,问题是循环引用。 JSON.stringify也会抱怨这种结构。 jQuery.extend在最基本的级别检测循环引用,并且可以在此处理您的基本示例,但jQuery.extend has its own issues as well。如果你已经在使用jQuery,你可以使用extend,但是否则你可能想看看自己写的东西,或者你可以使用我通过Google找到的这个花哨的cloneObject函数:

https://gist.github.com/NV/1396086

答案 1 :(得分:1)

_.cloneDeep处理循环引用。 http://lodash.com/