我有以下代码
ViewModel.prototype.update = function(initial) {
var ittr, key, val, x;
for (key in initial) {
val = initial[key];
if ($.isArray(val) && $.isArray(this[key]())) {
ittr = 0;
while (ittr < val.length) {
if (this[key].length > ittr) {
if ((this[key][ittr - 1]) instanceof ViewModel) {
x = Object.create(this[key][ittr - 1]);
x.update(val[ittr]);
this[key].push(x);
}
}
}
}
}
}
我有从 ViewModel 继承的对象,它们都具有更新功能。我有一个数组,我正在使用来自 json 对象(初始)的新内容进行更新。有时 Json 对象比我正在更新的现有数组长,所以我想添加相同类型的对象。我正在使用 Object.create(this[key][ittr -1]) 指向数组中的最后一个对象,并尝试从中实例化一个新对象。问题是,每次迭代,它都不会创建新对象,而只是旧对象的副本。知道我怎么能阻止它吗?
我也试过jquery
new $.extend({},this[key][ittr - 1])
我试过把 x 变成一个数组
x[ittr] = Object.create(this[key][ittr - 1]);
x[ittr].update(val[ittr]);
this[key].push(x[ittr]);
每当我调用 x.update 时,它都会更改数组中已设置为 x 的每个值。所以当我调用 Object.create 时,我从来没有真正创建一个新对象