在JavaScript中深度克隆对象的最有效方法是什么?

克隆JavaScript对象的最有效方法是什么?我已经看到obj = eval(uneval(o));被使用,但这是非标准的,只有Firefox支持

我做过类似的事情,obj = JSON.parse(JSON.stringify(o));但质疑效率。

我也看到了具有各种缺陷的递归复制功能。 
我很惊讶没有规范的解决方案。

三国纷争
浏览 870回答 5
5回答

森栏

我想要注意jQuery中的.clone()方法只能克隆DOM元素。要克隆JavaScript对象,您可以:// Shallow copyvar newObject = jQuery.extend({}, oldObject);// Deep copyvar newObject = jQuery.extend(true, {}, oldObject);可以在jQuery文档中找到更多信息。我还要注意,深拷贝实际上比上面显示的更聪明 - 它能够避免许多陷阱(例如,尝试深度扩展DOM元素)。它经常在jQuery核心和插件中使用,效果很好。

aluckdog

假设您的对象中只有变量而不是任何函数,您可以使用:var newObject = JSON.parse(JSON.stringify(oldObject));
打开App,查看更多内容
随时随地看视频慕课网APP