angularjs - 当一个对象引用另一个对象时,Angular JS : angular. 副本会导致浏览器崩溃

标签 angularjs deep-copy

我有以下 JavaScript/Angular 代码:

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

angular.copy触发,浏览器锁定。我假设这是因为复制函数正在做一个深拷贝,当它开始复制 a 对 b 的引用时,它进入 b 然后想要复制它对 a 的引用,从而创建一个循环副本,它永远不会结尾。

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

最佳答案

你的假设是对的,问题是循环引用。 JSON.stringify也会提示这种结构。 jQuery.extend在非常基本的级别检测循环引用,并且可以在此处处理您的基本示例,但是 jQuery.extend has its own issues as well .如果你已经在使用 jQuery,你可以只使用扩展,否则你可能想自己编写一些东西,或者你可以使用这个花哨的 cloneObject我通过谷歌找到的功能:

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

关于angularjs - 当一个对象引用另一个对象时,Angular JS : angular. 副本会导致浏览器崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16463422/

相关文章:

javascript - 使用 AngularJS/AJAX 提交表单

javascript - AngularJS:根据格式化日期过滤/搜索

c# - 如何在不将类标记为可序列化的情况下对其进行深度复制

python - 如何深度复制函数对象

javascript - 如何在angularjs中仅调用一个ng-model

javascript - 测试每个元素是否包含带有 Protractor 的元素

javascript - 如何使用angularjs减少冗余代码?

android - 如何通过单击邮件中的链接直接打开我的申请?

c# - 如何手动创建深拷贝

java - 数组的浅拷贝,为什么不能简单地做newArr = oldArr?