杰森回来参考
我有一个分层的json对象,我想遍历它并将父节点附加到每个元素。 这就是我所做的
function attach_back_reference(hierarchy, parent){ hierarchy.parent = parent; for(var i in hierarchy){ if(jQuery.isPlainObject(hierarchy[i])) attach_back_reference(hierarchy[i], hierarchy); } }
但这是错误的。 Maximum call stack size exceeded
既然你这样做了
for(var i in hierarchy){
添加parent
属性后, i
一个值将为"parent"
,因此您最终将子项设置为自己的祖父项无限。
你可以看到这个
var o = {}; ox = o; for (var i in o) { alert(i); }
提醒"x"
。
将循环移动到顶部。
function attach_back_reference(hierarchy, parent){ for(var i in hierarchy){ if(jQuery.isPlainObject(hierarchy[i])) attach_back_reference(hierarchy[i], hierarchy); } hierarchy.parent = parent; }
或者,如果您只需要这个来处理更新的解释器,您可以尝试使父属性不可数 : javascript defineProperty使属性不可枚举
那里有一个无限循环。
您将每个对象的父级设置为自身。