да понятно, что проблема не является таки проблемой. просто интересно — возможно ли такое объявление массива.потому что в языке нет таких конструкций на каждое свойство по строке тратите, а на создание объекта жалко?
да. именно про это я и спрашиваюНа языке python у словарей есть такой вариант записи:
dict.setdefault ( name, [] )
создание шаблона по-умолчанию, возможно нечто подобное есть и в яваскрипт
только количество объектов в массиве — штука совсем непостоянная
function BossArray () {
switch (arguments.length) {
case 1:
var arr = new Array();
for (var i = 0; i < arguments[0]; i++) {
arr.push({});
}
return arr;
break;
default:
return Array.apply(arr, arguments);
break;
}
}
var arr = BossArray(4);
arr[0].name = 'test';
arr[0].value = 'passed';
$.writeln(arr[0].toSource());
только остаётся вопрос — а при добавлении записи простого типа обычным способом вот так:Код:Array.prototype.objAtIndex=function(index) { if(this[index]==undefined) this[index]={}; return this[index]; }
var test=[];
test[4]="opa";
Зато, элементом такого массива может undefined быть, а твоего - нет!то есть вместо массива произвольного размера предлагается использовать массив фиксированной длины, да еще и сразу забитый объектами (хотя они не факт, что нужны везде)
оптимизация, однако!
Зато, элементом такого массива может undefined быть, а твоего - нет!