为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

三国纷争 2019-05-20 17:41:07
克隆JavaScript对象的最有效方法是什么?我已经看到obj = eval(uneval(o));被使用,但这是非标准的,只有Firefox支持。我做过类似的事情,obj = JSON.parse(JSON.stringify(o));但质疑效率。我也看到了具有各种缺陷的递归复制功能。 我很惊讶没有规范的解决方案。
查看完整描述

5 回答

?
森栏

TA贡献1810条经验 获得超5个赞

我想要注意jQuery中的.clone()方法只能克隆DOM元素。要克隆JavaScript对象,您可以:

// Shallow copyvar newObject = jQuery.extend({}, oldObject);// Deep copyvar newObject = jQuery.extend(true, {}, oldObject);

可以在jQuery文档中找到更多信息。

我还要注意,深拷贝实际上比上面显示的更聪明 - 它能够避免许多陷阱(例如,尝试深度扩展DOM元素)。它经常在jQuery核心和插件中使用,效果很好。


查看完整回答
反对 回复 2019-05-20
?
aluckdog

TA贡献1847条经验 获得超7个赞

假设您的对象中只有变量而不是任何函数,您可以使用:

var newObject = JSON.parse(JSON.stringify(oldObject));


查看完整回答
反对 回复 2019-05-20
  • 5 回答
  • 0 关注
  • 869 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信