2

これは、私がやろうとしていることの過度に単純化されたバージョンです。

var usersChoice;
var object1 = {name: 'fu',  id:'123', infoArray: [1,2,3,4,5]};
var object2 = {name: 'bar', id:'456', infoArray: [9,8]};

jQuery.extend(true, usersChoice, object1);

そしたら気が変わったら

jQuery.extend(true, usersChoice, object2);

結果:

usersChoice = {name: 'bar', id:'456', infoArray: [9,8,***3,4,5***]};

私が望むのは、古いオブジェクトが完全に新しいオブジェクトに置き換えられることです。拡張の直前に呼び出すことができる深い消去関数でも...

userChoice.nukeItFromOrbit();

記録のために、私は userChoice = new object だけを試したか、コピーせずに元のオブジェクトを指しているだけでした。どちらのソリューションも、途中で範囲外になる厄介な傾向があります。(これらのオブジェクトのいくつかは、「これ」が原因であると思われるものとして渡されています)

では、ディープ コピーの車輪を再発明せずにこれを行うにはどうすればよいでしょうか。いろいろ調べてみたのですが、車輪を再発明するか、自分がやっていることをしなければならない理由はないと言われただけです。=/

4

1 に答える 1

1

うーん、私は何かが欠けていないことを願っています(そうであればコメントを残してください)が、空のオブジェクトを拡張しないのはなぜですか

usersChoice = jQuery.extend(true, {}, object2);
于 2012-05-03T22:41:46.533 に答える