我需要在一个页面上创建多个对象并希望按顺序命名它们。有没有办法在 JavaScript 中做到这一点?
for (i=0;i<num;i++){
var obj+i = new myObject("param1","param2");
obj+i.someProperty = value;
}
这样我可以动态创建不同数量的对象(取决于值“num”),然后适当地设置它们的属性。
我可以在 PHP 中做到这一点,有没有办法在 JavaScript 中做到这一点?
我需要在一个页面上创建多个对象并希望按顺序命名它们。有没有办法在 JavaScript 中做到这一点?
for (i=0;i<num;i++){
var obj+i = new myObject("param1","param2");
obj+i.someProperty = value;
}
这样我可以动态创建不同数量的对象(取决于值“num”),然后适当地设置它们的属性。
我可以在 PHP 中做到这一点,有没有办法在 JavaScript 中做到这一点?
不建议这样做,但可以执行您尝试执行的操作(如果您在浏览器中运行,而不是在其他一些 js 环境中运行)。
for (i = 0; i < num; i++) {
window['obj' + i] = new myObject("param1","param2");
window['obj' + i].someProperty = value;
}
obj0.someProperty;
这是有效的,因为全局变量实际上是窗口对象的属性(如果您在浏览器中运行)。您可以使用点表示法 (myObject.prop) 或括号表示法 (myObject['prop']) 访问对象的属性。通过分配 window['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;
或者像许多其他答案所建议的那样使用数组。
这就是数组的用途,用来保存一些东西:
var objs = [];
for (i=0;i<num;i++){
objs[i] = new myObject("param1","param2");
objs[i].someProperty = value;
}
动态变量几乎总是一个坏主意。
您可以创建,也可以设置/修改该对象的属性。
修改后的代码:
var obj = {}; //
for (i=0;i<num;i++){
obj[i] = new myObject("param1","param2");
obj[i].someProperty = value;
}
我建议你使用数组。作为
var obj = []; //
for (i=0;i<num;i++){
obj[i] = new myObject("param1","param2");
obj[i].someProperty = value;
}