Javascript使用属性创建对象作为动态对象

时间:2014-07-20 21:02:36

标签: javascript arrays oop object

我尝试了很多搜索并没有获得所需的解决方案。

我想要实现的是

var myObject {
  id1 : { 
    name:place_name,
    location : place_loc
  },
  id2 : { 
    name:place_name,
    location : place_loc
  },
  id3 : { 
    name:place_name,
    location : place_loc
  }
}

我想要做的是,最初我希望属性" id1"," id2" ..是动态的。然后动态分配名称:place_name和每个属性的其他属性。

我不知道属性的数量(id1,id2,id3 ......)因此想要动态添加它们并且添加属性(id1,id2 ...)后我想动态添加属性值。每个id的(place_name& place_loc)。

我的代码看起来像这样。

var myObject = {};
myObject[idnumber1].place = "SomePlace1";
myObject[idnumber1].place = "SomeLoc1";
myObject[idnumber2].place = "SomePlace1";
myObject[idnumber2].place = "SomeLoc1";

但它给出了错误。

我知道这似乎很简单,但任何帮助都会感激不尽。

提前致谢。 :)

3 个答案:

答案 0 :(得分:1)

您正尝试在键“idnumber1”等处设置已分配对象的值。

你需要的是为你的id初始化每个对象:

var myObject = {};
myObject[idnumber1] = {};
myObject[idnumber1].place = "SomePlace1";
myObject[idnumber2] = {};
myObject[idnumber2].place = "SomeLoc1"

答案 1 :(得分:0)

我会这样做,它并不完全是你所要求的,但我认为以后更改它会变得更容易。

function Place(name, location) {
    this.name = name;
    this.location = location;
}

var myObject = {}
myObject['id1'] = new Place('Foo', 'Bar');
myObject['id2'] = new Place('Internet', 'test');
console.log(myObject);

答案 2 :(得分:0)

要动态创建集合中的对象,可以使用数字计数器变量来创建对象集合(myObject["id" + i] = {name: place_name, location: place_loc})。

一个例子:

var myObject = {};
for (i = 0; i < 20; i++){
    myObject["id" + i] = {name: place_name, location: place_loc}
}

实际上,您可以使用在循环外增量的计数器。