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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-26 11:58:10  来源:igfitidea点击:

How do I clone/copy an instance of an object in CoffeeScript?

javascriptcoffeescriptcloneinstance

提问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?

摘自:在 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 还有一个浅层克隆功能:

http://underscorejs.org/#clone

http://underscorejs.org/#clone