这是非常基本的,但我只是看不到我在这里缺少的东西..
考虑下一个数组objects
。它需要填充object
个实例,每个实例都有自己的id
:
var objects= [];
var object= {};
object.id = 1;
objects[0] = object;
object.id = 2;
objects[1] = object;
object.id = 3;
objects[2] = object;
当我使用alert(objects[0].id)
警告第一个对象时,它会显示3
。
再一次,我在这里失踪了什么?
答案 0 :(得分:7)
这是因为您正在将相同的对象推送到数组中的每个位置。你需要每次都做新的。
var objects = [];
objects[0] = {id: 1};
objects[1] = {id: 2};
objects[2] = {id: 3};
或者更好的是,只需一次完成:
var objects = [
{id: 1},
{id: 2},
{id: 3},
];
答案 1 :(得分:5)
它将对象保存为引用,因此只要您更改了id,它就会为所有内容更改它。 要解决它,你可以简单地做
object.id = 1;
objects[0] = object;
object = {};