У меня есть этот объект:Ассоциативные массивы в JavaScript
function formBuddy()
{
var fields = new Array();
var labels = new Array();
var rules = new Array();
var count=0;
this.addField = function(field, label, rule)
{
fields[count] = field;
labels[field] = label;
rules[field] = rule;
count = ++count;
}
}
Его использовали таким образом:
var cForm=new formBuddy();
cForm.addField("c_first_name","First Name","required");
cForm.addField("c_last_name","Last Name","required");
Проблема, в функции addField()
fields
массив создается правильно (возможно, из-за для обращения к нему используется числовой индекс), но другие 2 массива (labels
и rules
) вообще не касаются. Выполнение console.log
показывает их как пустые в firebug.
Что мне нужно изменить, чтобы заставить их работать? Я все равно хотел бы ссылаться на правила и метки по строковому индексу поля.
Javascript не имеют собственные ассоциативные массивы, только объекты. Объекты имеют свойства, а имя свойства всегда является строкой. Даже индекс массивов преобразуется в строку до того, как произойдет «массивная магия». – some