根据循环计数器创建具有唯一名称的javascript对象

时间:2012-04-13 11:34:20

标签: javascript variables object loops

我对Javascript很新,我有一个关于制定变量名称的小问题:

function createObjects(int length) {
  var count;
  for(count=0; count<length; count++;) {
    var personObj + "" + count;
  }  
}

这里我想为for循环的每次迭代制定一个不同的personObj,这是正确的程序吗?这会给我: var personObj1 var personObj2 等

谢谢! 马特

5 个答案:

答案 0 :(得分:1)

别。动态生成变量绝不是一个好主意。请改用对象或数组。它们旨在构建相关数据组。

function createObjects(length) {
  var count, people = [];
  for(count=0; count<length; count++;) {
    people.push('something');
  }  
  return people;
}

答案 1 :(得分:1)

如果你想拥有相同底层数据结构/逻辑的多个实例,你可以使用这样的方法:

创建 constructor function ,生成Object,其中包含您需要的属性(也包括方法)。例如:

function PersonObj(name, age) {
    this.name = name;
    this.age = age;
}

这使您可以使用PersonObj创建var n = new PersonObj('Fred',32);的新实例。现在,您可以使用 Array 来存储这些对象的多个实例:

var persons = []; // creates a new Array

for (var i = 1; i < 13; i++){
    persons.push(new PersonObj('Alfred', i));
}

persons现在将包含12名1至12岁的阿尔弗雷德。

如果你想改变阿尔弗雷德3号的年龄,你可以这样做:

persons[2].age = 99;

参见 a live demo

答案 2 :(得分:0)

为什么不为此使用数组?

答案 3 :(得分:0)

如果需要,您可以向窗口对象添加命名属性:

function createObjects(int length) {
  var count;
  for(count=0; count<length; count++;) {
    window[personObj + "" + count] = new SomeObject();
  }  
}

答案 4 :(得分:0)

创建对象,向对象添加属性并将对象存储在数组中。

var al = new Array();
function createObjects(int length) {
 var o = new Object();
  for(var count=0; count<length; count++;) {
      o.count = 'some value';
  } 
al.push(o);
}