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

inc*_*nez 5 deep-copy angularjs

我有以下JavaScript/Angular代码:

var a = {};
var b = {};
a.ref = b;
b.ref = a;
angular.copy(a);
Run Code Online (Sandbox Code Playgroud)

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

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

Lan*_*don 2

您的假设是正确的,问题在于循环引用。JSON.stringify也会抱怨这个结构。 jQuery.extend在非常基本的级别上检测循环引用,并且可以处理这里的基本示例,但是jQuery.extend 也有自己的问题。如果你已经在使用 jQuery,你可以只使用扩展,但否则你可能想看看自己写一些东西,或者你可以使用cloneObject我通过 Google 找到的这个奇特函数:

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