javascript 如何在 CoffeeScript 中克隆/复制对象的实例?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/11060631/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How do I clone/copy an instance of an object in CoffeeScript?
提问by Chris Nolet
Fairly straight forward question but Googling hasn't turned up anything as yet.
相当直接的问题,但谷歌搜索还没有出现任何问题。
How do I copy/clone/duplicate an instance of an object in Coffeescript? I could always just create a clone()
method which returns a new instance with copied values, but that seems like an error-prone way to go about it.
如何在 Coffeescript 中复制/克隆/复制对象的实例?我总是可以创建一个clone()
方法来返回一个带有复制值的新实例,但这似乎是一种容易出错的方法。
Does CoffeeScript offer a simpler solution?
CoffeeScript 是否提供了更简单的解决方案?
回答by Larry Battle
This might work.
这可能会奏效。
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
Adopted from : What is the most efficient way to deep clone an object in JavaScript?
回答by Chris Nolet
Thanks to Larry Battle for the hint:
感谢 Larry Battle 的提示:
John Resig's solution of using jQuery.extend works brilliantly!
John Resig 使用 jQuery.extend 的解决方案非常有效!
// Shallow copy
newObject = $.extend({}, oldObject);
// Deep copy
newObject = $.extend(true, {}, oldObject);
More information can be found in the jQuery documentation.
更多信息可以在jQuery 文档中找到。
回答by Dave Stern
From The CoffeeScript Cookbook:
来自 CoffeeScript 食谱:
http://coffeescriptcookbook.com/chapters/classes_and_objects/cloning
http://coffeescriptcookbook.com/chapters/classes_and_objects/cloning
Underscore.js also has a shallow clone function:
Underscore.js 还有一个浅层克隆功能: