0

我对 Javascript 还不够陌生,我有一个关于制定变量名的小问题:

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

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

谢谢!马特

4

5 回答 5

1

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

function createObjects(length) {
  var count, people = [];
  for(count=0; count<length; count++;) {
    people.push('something');
  }  
  return people;
}
于 2012-04-13T11:37:09.340 回答
1

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

创建一个构造函数,该函数生成一个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 岁的 Alfred。

如果你想改变 Alfred No. 3 的年龄,你可以这样做:

persons[2].age = 99;

观看现场演示

于 2012-04-13T12:04:36.343 回答
0

为什么不为此使用数组呢?

于 2012-04-13T11:36:06.770 回答
0

如果需要,您可以始终将命名属性添加到窗口对象:

function createObjects(int length) {
  var count;
  for(count=0; count<length; count++;) {
    window[personObj + "" + count] = new SomeObject();
  }  
}
于 2012-04-13T11:40:58.773 回答
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);
}
于 2012-04-13T12:03:37.360 回答