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

creating javascript objects with unique names depending on counter in loop

本文关键字:唯一 对象 JavaScript 创建 循环 计数器      更新时间:2023-09-26

我对Javascript很陌生,我有一个关于制定变量名称的小查询:

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

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

谢谢!马 特

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

创建一个构造函数,该函数使用所需的属性(也是方法)生成Object。例如:

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

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

var persons = []; // creates a new Array
for (var i = 1; i < 13; i++){
    persons.push(new PersonObj('Alfred', i));
}

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

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

persons[2].age = 99;

观看现场演示

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

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

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

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

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

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

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);
}