Javascript 如何在CoffeeScript中克隆/复制对象的实例?
这是一个相当直截了当的问题,但谷歌目前还没有发现任何问题 如何在Coffeescript中复制/克隆/复制对象的实例?我总是可以创建一个Javascript 如何在CoffeeScript中克隆/复制对象的实例?,javascript,coffeescript,clone,instance,Javascript,Coffeescript,Clone,Instance,这是一个相当直截了当的问题,但谷歌目前还没有发现任何问题 如何在Coffeescript中复制/克隆/复制对象的实例?我总是可以创建一个clone()方法,该方法返回一个带有复制值的新实例,但这似乎是一种容易出错的方法 CoffeeScript是否提供了一个更简单的解决方案?这可能有效 clone = (obj) -> return obj if obj is null or typeof (obj) isnt "object" temp = new obj.constructo
clone()
方法,该方法返回一个带有复制值的新实例,但这似乎是一种容易出错的方法
CoffeeScript是否提供了一个更简单的解决方案?这可能有效
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
采纳自:感谢拉里·巴特的提示: John Resig使用jQuery.extend的解决方案非常出色
// Shallow copy
newObject = $.extend({}, oldObject);
// Deep copy
newObject = $.extend(true, {}, oldObject);
更多信息可在CoffeeScript烹饪手册的。中找到: Underline.js还有一个浅克隆功能:
它应该是
new obj.constructor()
。否则,您将得到一个“无法将'temp'转换为object”。当我这样做时,更改新对象中的属性最终会更改旧对象中的属性,那么这是一个“副本”吗?嗯,听起来不对:)您是在编辑基本属性还是复杂属性?如果要编辑嵌套属性,可能需要使用深度副本。以下是John Resig对JavaScript的原始回答:(John是jQuery的创建者)。我想我已经对它进行了分类。我认为这是KnockoutJS将我的JS对象包装为KO VM。