我可以在JavaScript中创建动态对象名称吗?

Ter*_*nes 12 javascript dynamic-variables

可能重复:
javascript - 动态变量
动态Javascript变量名称

我需要在页面上创建许多对象,并希望按顺序命名它们.有没有办法在JavaScript中执行此操作?

for (i=0;i<num;i++){
  var obj+i = new myObject("param1","param2");
  obj+i.someProperty = value;
}
Run Code Online (Sandbox Code Playgroud)

这样我就可以动态创建不同数量的对象(取决于值"num"),然后适当地设置它们的属性.

我可以用PHP做到这一点,有没有办法在JavaScript中做到这一点?

Tre*_*xon 12

不建议这样做,但要做你想做的事情(如果你在浏览器中运行而不是其他一些js环境).

for (i = 0; i < num; i++) {
  window['obj' + i] = new myObject("param1","param2");
  window['obj' + i].someProperty = value;
}
obj0.someProperty;
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为全局变量实际上是窗口对象的属性(如果您在浏览器中运行).您可以使用点表示法(myObject.prop)或括号表示法(myObject ['prop'])访问对象的属性.通过分配窗口['obj'+ i],您将创建一个名为'obj'+ i的全局变量.

更好的选择是使用数组或父对象来存储对象.

myObjs = {};
for (i = 0; i < num; i++) {
  myObjs['obj' + i] = new myObject("param1","param2");
  myObjs['obj' + i].someProperty = value;
}
myObjs.obj0.someProperty;
Run Code Online (Sandbox Code Playgroud)

或者使用像许多其他答案建议的数组.


Fel*_*ing 6

这就是数组的用途,用于存放一些东西:

var objs = [];
for (i=0;i<num;i++){
  objs[i] = new myObject("param1","param2");
  objs[i].someProperty = value;
}
Run Code Online (Sandbox Code Playgroud)

动态变量几乎总是一个坏主意.


Ano*_*oop 0

您可以创建该对象,也可以设置/修改该对象的属性。

修改后的代码:

var obj = {}; //
for (i=0;i<num;i++){
  obj[i] = new myObject("param1","param2");
  obj[i].someProperty = value;
}
Run Code Online (Sandbox Code Playgroud)

我建议你使用数组。作为

 var obj = []; //
    for (i=0;i<num;i++){
      obj[i] = new myObject("param1","param2");
      obj[i].someProperty = value;
    }
Run Code Online (Sandbox Code Playgroud)