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 回答