鉴于我在一个大型 JavaScript 对象中有一个循环引用
我尝试JSON.stringify(problematicObject)
浏览器抛出
“类型错误:将循环结构转换为 JSON”
(这是预期的)
那我想找到这个循环引用的原因,最好使用Chrome开发者工具?这可能吗?如何查找并修复大对象中的循环引用?
拉自http://blog.vjeux.com/2011/javascript/cycl-object-detection.html。添加一行来检测循环的位置。将其粘贴到 Chrome 开发工具中:
function isCyclic (obj) {
var seenObjects = [];
function detect (obj) {
if (obj && typeof obj === 'object') {
if (seenObjects.indexOf(obj) !== -1) {
return true;
}
seenObjects.push(obj);
for (var key in obj) {
if (obj.hasOwnProperty(key) && detect(obj[key])) {
console.log(obj, 'cycle at ' + key);
return true;
}
}
}
return false;
}
return detect(obj);
}
这是测试:
> a = {}
> b = {}
> a.b = b; b.a = a;
> isCyclic(a)
Object {a: Object}
"cycle at a"
Object {b: Object}
"cycle at b"
true
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)