【发布时间】:2011-12-02 11:22:46
【问题描述】:
jQuery.extend 对 circular reference 安全吗?
如何避免 Javascript 中的循环引用(在克隆或递归检查时)?仅在其属性列表中检查当前目标的存在是不够的,因为它可能引用了一些外部对象。
一个选项是保留另一个列表,其中包含到目前为止提取的所有objects。但这会增加内存消耗并要求停止脚本吗?
我不想在工作线程中移动克隆操作。
【问题讨论】:
-
根据对象的大小,
JSON.stringiying它并检查它是否失败呢?如果对象包含圆形结构,JSON.stringify将失败,并且(至少在 Chrome 上)您可以使用try catch很好地捕捉到这种特定情况。 -
您不需要检查循环引用。除非您对它们进行字符串化,否则它们会被很好地处理,在这种情况下它们将不包括循环引用。
-
我想递归合并两个对象。所以如果存在循环引用,它就有可能无限进入循环。我不明白
stringify在这种情况下的意义。
标签: javascript recursion merge circular-reference cloning