js 拼接json对象出现的一个小问题

296 阅读1分钟
var detailimgViews = [] ;
var DetailimgView = {} ;  //放在这里
for(var i = 1 ; i < 3 ; i++){
	DetailimgView["imgUrl"] = i ;
	console.log(JSON.stringify(DetailimgView) + "------" + i)
	detailimgViews.push(DetailimgView)
}
console.log(detailimgViews)

//结果 [{imgUrl:2},{imgUrl:2}] 
//解释 当var DetailimgView = {} ;  放在for循环的外面时,DetailimgView["imgUrl"] = xxx,会改变已经存放在detailimgViews数组里面的DetailimgView对象的值。看结果就知道了。

正确代码

var detailimgViews = [] ;
for(var i = 1 ; i < 3 ; i++){
var DetailimgView = {} ;  //放在这里
	DetailimgView["imgUrl"] = i ;
	console.log(JSON.stringify(DetailimgView) + "------" + i)
	detailimgViews.push(DetailimgView)
}
console.log(detailimgViews)
//结果 [{imgUrl:1},{imgUrl:2}]