Действителен ли следующий код?
var i; var objs={}; for (i=0; i <10; i++) { objs.i=new FooObject(); } alert(objs.4.someMethod());
Если нет, то как его следует переписать, чтобы достичь того, чего я хочу?
Вы должны отредактировать ваш код следующим образом:
var i; var objs = {}; for (i = 0; i < 10; i++) { objs[i] = new FooObject(); } alert(objs[4].someMethod());
Вы не можете использовать цифры для имен переменных 1 . Если вы хотите сослаться на элемент по числовому значению, используйте массив 2 . Затем вы можете получить доступ к элементам по их ключу в массиве. Если вы хотите перебрать, вы можете использовать опцию for...in 3 . Не имеет значения, если ваши ключи последовательные и смежные:
for...in
var x; var myItems = new Array(); myItems[0] = "Foo"; myItems[9] = "Bar"; myItems[5] = "Fiz"; for (x in myItems) { alert(myItems[x]); }
1 http://www.w3schools.com/js/js_variables.asp 2 http://www.w3schools.com/js/js_obj_array.asp 3 http://www.w3schools.com/js/tryit.asp?filename=tryjs_array_for_in
var i; var objs = new Array(); for(i = 0; i < 10; i++) { objs.push(new FooObject()); } objs[4].someMethod();
Вы не можете использовать числа в качестве имен переменных, потому что прямые числа существуют как их собственный объект, установленный в Javascript (то есть, вы можете думать о 4 как о глобальной переменной, которую вы не можете переопределить).