相當直接的問題,但谷歌還沒有發現任何東西。如何在CoffeeScript中克隆/複製對象的實例?
如何複製/複製/複製Coffeescript中的對象實例?我總是可以創建一個clone()
方法,該方法返回具有複製值的新實例,但這似乎是一種容易出錯的方式。
CoffeeScript是否提供更簡單的解決方案?
相當直接的問題,但谷歌還沒有發現任何東西。如何在CoffeeScript中克隆/複製對象的實例?
如何複製/複製/複製Coffeescript中的對象實例?我總是可以創建一個clone()
方法,該方法返回具有複製值的新實例,但這似乎是一種容易出錯的方式。
CoffeeScript是否提供更簡單的解決方案?
感謝拉里戰提示:
使用jQuery.extend的約翰Resig的解決方案出色的作品
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
從採納!
// Shallow copy
newObject = $.extend({}, oldObject);
// Deep copy
newObject = $.extend(true, {}, oldObject);
更多信息可在jQuery documentation中找到。
當我這樣做時,更改新對象中的屬性最終會改變舊對象中的屬性,那麼這是如何「複製」? –
嗯,這聽起來不對:)你在編輯原始屬性還是複雜屬性?如果您正在編輯嵌套屬性,則可能需要使用深層副本。這裏是John Resig對JavaScript的原始答案:http://stackoverflow.com/a/122704/746890(John是jQuery的創建者)。 –
我想我對它進行了排序。我認爲這是KnockoutJS將我的JS對象包裝爲KO虛擬機。 –
從CoffeeScript的食譜:
http://coffeescriptcookbook.com/chapters/classes_and_objects/cloning
Underscore.js也有一個淺克隆功能:
它應該是'新obj.constructor()'。否則,你會得到一個「無法轉換'臨時對象」。 – dennis
@dennis謝謝丹尼斯。我更新了代碼。 –