6

相当直截了当的问题,但谷歌搜索还没有出现任何问题。

如何在 Coffeescript 中复制/克隆/复制对象的实例?我总是可以创建一个clone()返回具有复制值的新实例的方法,但这似乎是一种容易出错的方法。

CoffeeScript 是否提供更简单的解决方案?

4

3 回答 3

8

这可能会奏效。

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

采用自:在 JavaScript 中深度克隆对象的最有效方法是什么?

于 2012-06-16T04:44:27.123 回答
7

感谢 Larry Battle 的提示:

John Resig 使用 jQuery.extend 的解决方案非常出色!

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

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

更多信息可以在jQuery 文档中找到。

于 2012-06-17T04:13:35.130 回答
2

来自 CoffeeScript 食谱:

http://coffeescriptcookbook.com/chapters/classes_and_objects/cloning

Underscore.js 还有一个浅克隆功能:

http://underscorejs.org/#clone

于 2012-12-04T21:46:15.093 回答