往数组中push对象, 会覆盖之前push的值
错误代码:
var obj = { a: 123, b: 234, c: 345};
var array = [ ];
var resultObj = { };
for(var i = 0; i < obj.length; i++) {
resultObj.name = obj[i];
array.push(resultObj);
}
得到的结果: 345, 345, 345; 而不是123, 234, 345;
改造:
var obj = { a: 123, b: 234, c: 345};
var array = [ ];
for(var i = 0; i < obj.length; i++) {
var resultObj = { };
resultObj.name = obj[i];
array.push(resultObj);
};
把resultObj定义在for循环中, 得到的结果就是123,234,345;
原因: 把对象定义在外面, 始终指向一个地址, 每次赋值都赋值给了同一个地址, 所以最后赋值的会覆盖之前的值;
把对象定义在循环中, 每次循环rusultObj都会指向不同的地址, 每次都是一个新对象