【发布时间】:2012-06-19 02:40:26
【问题描述】:
相当直截了当的问题,但谷歌搜索尚未发现任何问题。
如何在 Coffeescript 中复制/克隆/复制对象的实例?我总是可以创建一个 clone() 方法,该方法返回一个带有复制值的新实例,但这似乎是一种容易出错的方法。
CoffeeScript 是否提供更简单的解决方案?
【问题讨论】:
标签: javascript coffeescript clone instance
相当直截了当的问题,但谷歌搜索尚未发现任何问题。
如何在 Coffeescript 中复制/克隆/复制对象的实例?我总是可以创建一个 clone() 方法,该方法返回一个带有复制值的新实例,但这似乎是一种容易出错的方法。
CoffeeScript 是否提供更简单的解决方案?
【问题讨论】:
标签: javascript coffeescript clone instance
这可能有效。
clone = (obj) ->
return obj if obj is null or typeof (obj) isnt "object"
temp = new obj.constructor()
for key of obj
temp[key] = clone(obj[key])
temp
来自:What is the most efficient way to deep clone an object in JavaScript?
【讨论】:
new obj.constructor()。否则,您将收到“无法将 'temp' 转换为对象。”
感谢 Larry Battle 的提示:
John Resig 使用 jQuery.extend 的解决方案非常出色!
// Shallow copy
newObject = $.extend({}, oldObject);
// Deep copy
newObject = $.extend(true, {}, oldObject);
更多信息可以在jQuery documentation找到。
【讨论】:
来自 CoffeeScript 食谱:
http://coffeescriptcookbook.com/chapters/classes_and_objects/cloning
Underscore.js 还有一个浅克隆功能:
【讨论】: