简单的例子:for循环遍历2个数组,分别添加给对象的2个属性,然后将对象添加到新数组,为什么最后新数组每一项都一样??
var arr=[]
var k={}
k.num=0
k.name=''
a=[1,2,3,4]
b=['tom','sun','bob','kiki']
for(i=0;i<4;i++)
{
k.num=a[i];
k.name=b[i];
arr.push(k)
}
console.log(arr)
结果:[{name:'kiki,num:4},{name:'kiki,num:4},{name:'kiki,num:4},{name:'kiki,num:4}]
k是一个对象,而且在内存中只有一个,循环中每次对k的属性赋值都在相同的内存空间里进行,所以push到arr中的4个对象都是相同的k对象,且因为最后给k属性赋值为
所以打印出这个效果。
可以这么改