问题

克隆JavaScript对象的最有效方法是什么?我看到 obj = eval(uneval(o)); 被使用,但这是非标准的,只有Firefox 支持.我做了像 obj = JSON.parse(JSON.stringify(o)); ,但问题的效率.我还看到了具有各种缺陷的递归复制功能.

我很惊讶没有规范的解决方案.



解决方法

Note: This is a reply to another answer, not a proper response to this question. If you wish to have fast object cloning please follow Corban's advice in their answer to this question.


我想注意, .clone() 方法 jQuery 仅克隆DOM元素.为了克隆JavaScript对象,您可以这样做:

// Shallow copy
var newObject = jQuery.extend({}, oldObject);

// Deep copy
var newObject = jQuery.extend(true, {}, oldObject);

有关详情,请参阅 jQuery文档.

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




相关问题推荐