我需要创建基于用户定义数字的 javascript 对象。所以如果用户定义了 20 个,那么我需要创建 20 个变量。
var interval_1=0, interval_2=0, interval_3=0, interval_4=0, interval_5=0... interval_20=0;
我该怎么做才能动态创建对象的名称?
for (i=0; i<=interval; i++){
var interval_ + i.toString() = i;
}
我需要创建基于用户定义数字的 javascript 对象。所以如果用户定义了 20 个,那么我需要创建 20 个变量。
var interval_1=0, interval_2=0, interval_3=0, interval_4=0, interval_5=0... interval_20=0;
我该怎么做才能动态创建对象的名称?
for (i=0; i<=interval; i++){
var interval_ + i.toString() = i;
}
呃,使用数组?
for( i=0; i<=count; i++) array[i] = i;
使用数组:
var i, count, interval = [];
// user defines count, 20 for example
count = 20;
for (i = 0; i < count; i++) {
interval.push(i);
}
// interval[0] === 0
// interval[19] === 19
// interval.length === 20
请注意,这会将索引从 0 开始并上升到 count - 1。除非您从 1 开始,否则不要使用 i <= count。
这是一个 jsFiddle 来说明。在大多数浏览器中按 F12 打开开发工具并查看控制台,或将 console.log() 更改为 alert()。
链接:http: //jsfiddle.net/willslab/CapBN/1/
或者,您可以为每个值设置一个具有属性的对象:
var i, count, intervals = {};
count = 20;
for (i = 0; i < count; i++) {
intervals["interval_" + i] = i;
}
//intervals.interval_0 === 0
//intervals.interval_19 === 19)
链接:http: //jsfiddle.net/willslab/EBjx7/2/
for (i=0; i<=20; i++){
window["interval_" + i.toString()] = i;
}
Javascript变量可以通过以下方式创建:
var x;
y = 'foo'
;function bar(x, y, z);
eval( 'var x = 4');
如果所有其他方法都失败并且您想要说 5 个变量,您可以这样做:
var s = [];
var i = 5;
while (i--) {
s[i] = 'a' + i;
}
eval('var ' + s.join(',') + ';');
alert(a0); // shows undefined
如果未定义a0 ,则最后一步将引发引用错误。
当然,您现在遇到的问题是如何访问它们。如果它们被创建为全局变量,您可以使用:
globalObj['a' + i];
其中globalObj通常是window,但是没有等效的访问函数变量,因为您无法访问它们的变量对象。
因此,通常的解决方案是将事物放入数组或对象中,您可以在其中迭代属性以查找您不知道名称的事物。