かなりストレートな質問ですが、Google検索ではまだ何も表示されていません。CoffeeScriptでオブジェクトのインスタンスを複製/コピーするにはどうすればよいですか?
Coffeescriptでオブジェクトのインスタンスをコピー/複製/複製するにはどうすればよいですか?私は常にコピーされた値を持つ新しいインスタンスを返すclone()
メソッドを作成することができますが、それはエラーを起こしやすい方法のようです。
CoffeeScriptはより簡単なソリューションを提供しますか?
かなりストレートな質問ですが、Google検索ではまだ何も表示されていません。CoffeeScriptでオブジェクトのインスタンスを複製/コピーするにはどうすればよいですか?
Coffeescriptでオブジェクトのインスタンスをコピー/複製/複製するにはどうすればよいですか?私は常にコピーされた値を持つ新しいインスタンスを返す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
:What is the most efficient way to deep clone an object in JavaScript?
ヒントのラリーバトルのおかげ:
jQuery.extendを使用してのジョンResig氏のソリューションは、見事に動作します!
// Shallow copy
newObject = $.extend({}, oldObject);
// Deep copy
newObject = $.extend(true, {}, oldObject);
さらに詳しい情報はjQuery documentationにあります。 CoffeeScriptのクックブックから
これを行うと、新しいオブジェクトのプロパティの変更は古いものから変更されるので、これはどのように「コピー」ですか? –
ええと、それは正しく聞こえません:)プリミティブなプロパティや複雑なプロパティを編集していますか?ネストされたプロパティを編集する場合は、詳細コピーを使用する必要があります。 John ResigのJavaScriptに関する元の答えは次のとおりです:http://stackoverflow.com/a/122704/746890(JohnはjQueryの作成者でした) –
私はそれを分類したと思います。私はKO VMとしてJSオブジェクトをラップするKnockoutJSだと思います。 –
:
http://coffeescriptcookbook.com/chapters/classes_and_objects/cloning
Underscore.jsも浅いクローン機能を持っています
それは '新しいobj.constructor()'でなければなりません。さもなければ、あなたは "テンポをオブジェクトに変換できません。" – dennis
@dennis Thanks dennis。私はコードを更新しました。 –