我有一个json对象,有多个层次,我们称之为动物园。
var ZOO = {
info: {
cages: {
amount: 5,
size: { x: 1, y: 0.2 },
additionals: 'a broken bucket',
},
},
}, myZoos = [];
现在我想克隆&修改此对象,然后将其添加到名为myZoos的数组中。
window.JSON.clone = function (json) {
return $.extend({}, json);
};
for (var a = 1; a <= 3; a++) {
var newZoo = JSON.clone(ZOO);
newZoo.info.cages.size = { x: (a * 5), y: (a * 2) };
myZoos.push(newZoo);
}
让我们读取我们填充的数组并检查随机大小的值!
for (var b = 0; b < myZoos.length; b++) {
var myZoo = myZoos[b];
console.log(myZoo.info.cages.size);
}
结果:Object { x: 15, y: 6 }
Object { x: 15, y: 6 }
Object { x: 15, y: 6 }
看起来我只得到最后一个被推到数组的值!
为什么只返回数组中的最后一项?
需要使用.extend()
方法的deep-copy参数
window.JSON.clone = function (json) {
return $.extend(true, {}, json);
};