jQuery を使用して JavaScript オブジェクトを拡張するときに、小さな問題に遭遇しました。実行時
var item = $.extend(options.itemDefaults, item);
options.itemDefaults
は既に存在するプロパティで拡張されitem
、結果は に渡されitem
ます。ここまでは順調ですね。
しかし、次にこの行が実行されると、元のデフォルトではなく、持っていたoptions.itemDefaults
すべてのプロパティ値が保持されます。item
デフォルトが失われました。
デフォルト オブジェクトを一時変数に単純に格納し、代わりに一時変数を拡張できることはわかっていますが、少し長く見えます。その回り道をせずに、私が求めていることを行う方法はありますか (提供された値でデフォルト値をオーバーライドし、値が提供されていない場合はデフォルトを使用しますが、デフォルト オブジェクトは変更しません)。
更新:これは、私が望んでいたほど簡単には回避できなかったようです。私がする時
var defaults = options.itemDefaults;
var $item = $.extend(defaults, { attributeModel: options.attributeModel }, item);
defaults = undefined
各反復で、私はまだitem
上からプロパティを追加していoptions.itemDefaults
ます! どうすればこれを回避できますか?