var page_ary=[];
var obj={};
//var j=0;
for(var i=1;i<=3;i++){
obj.page=i;
obj.cla='';
//j=i;
console.log('i','---',i);
console.log('obj','---',obj);
page_ary[i-1]=obj;
console.log('page_ary','---',page_ary);
}
打印出来的page_ary
{page: 3, cla: ""}
{page: 3, cla: ""}
{page: 3, cla: ""}
如果把obj声明放在里面就可以了
var page_ary=[];
//var j=0;
for(var i=1;i<=3;i++){
//放在这里
var obj={}
obj.page=i;
obj.cla='';
//j=i;
console.log('i','---',i);
console.log('obj','---',obj);
page_ary[i-1]=obj;
console.log('page_ary','---',page_ary);
}
打印结果就是这样
{page: 1, cla: ""}
{page: 2, cla: ""}
{page: 3, cla: ""}
谁能解释一下这是为什么??? 谢谢!!!
for循环结束后,i=3;
obj在循环外(又是一个对象,会被引用。你不用对象就不会有问题)最后拿到的就都是i=3的时候的数据。
所以你需要把obj的声明放循环里面,每次循环结束后,obj这个对象都会被重新构造,不会出引用问题,赋值就OK了。