我有以下 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/