杰森回来参考

我有一个分层的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使属性不可枚举

那里有一个无限循环。

您将每个对象的父级设置为自身。