2014-01-20 114 views
0

这是非常基本的,但我只是看不到我在这里丢失的东西。它需要填充的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。 再次,我在这里错过了什么?

+5

'object'始终是同一个对象。你只更新它的'id'属性,并将它分配给数组中的两个三个不同的位置。 –

回答

5

它保存对象作为参考,所以一旦你改变了id,它会改变它的一切。 为了解决它,你可以根本就

object.id = 1; 
objects[0] = object; 
object = {}; 
+1

感谢您的快速响应! :) – JordyV

7

这是因为你推相同对象到阵列中的每个点。你需要每次都制作新的。

var objects = []; 

objects[0] = {id: 1}; 
objects[1] = {id: 2}; 
objects[2] = {id: 3}; 

或者更好的,只是让这一切在一次:

var objects = [ 
    {id: 1}, 
    {id: 2}, 
    {id: 3}, 
]; 
+1

@ mori57:是的...这就是我得到的复制和粘贴:-P –

+0

非常感谢!两个答案都很好,bt Shryme更符合我的需求,因为我需要多个对象实例来存储来自网站的数据。而且他可以使用这些分数超过你的能力;)! – JordyV