Angularjs Angular JS:Angular.copy在对象引用另一个对象时崩溃浏览器

Angularjs Angular JS:Angular.copy在对象引用另一个对象时崩溃浏览器,angularjs,deep-copy,Angularjs,Deep Copy,我有以下JavaScript/Angular代码: var a = {}; var b = {}; a.ref = b; b.ref = a; angular.copy(a); 当触发angular.copy时,浏览器锁定。我假设这是因为copy函数正在进行深度复制,当它开始复制a对b的引用时,它进入b,然后想要复制a的引用,从而创建一个循环副本,它永远不会结束 这个假设正确吗?如果是,有没有办法避免这种情况?我假设答案将涉及改变我的数据外观,但我很想听听其他人的想法。你的假设是正确的,问题是

我有以下JavaScript/Angular代码:

var a = {};
var b = {};
a.ref = b;
b.ref = a;
angular.copy(a);
当触发
angular.copy
时,浏览器锁定。我假设这是因为copy函数正在进行深度复制,当它开始复制a对b的引用时,它进入b,然后想要复制a的引用,从而创建一个循环副本,它永远不会结束


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

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


\ cloneDeep
处理循环引用

有趣。谢谢你澄清我的假设。听起来我的数据结构应该改变…你就是这样修复的吗?你能让它使用循环引用吗?我们通过修改数据模型修复了它。我们没有为子节点提供实际的父对象,而是为每个子节点添加了子节点和父节点ID。。。因此,当我们创建孙子时,很容易传递其父母的ID。