Цитата:
|
Сам не силён, и если дезинформировал поправите меня! Если в ключе присутствует не цыфра, то это - Объекты.
|
Не совсем. В javascript могут быть и пронумерованные, и ассоциативные, и смешанные массивы, с объектами дела обстоят точно так же - ключом может выступать как число, как строка, как и то и другое. При этом массивы и объекты - разные сущности. Хоть они в большинстве случаев и взаимозаменяемы, рекомендуется все же использовать их по своему назначению - объекты для сложных конструкций со словесными индексами, массивы - для пронумерованных списков. JSON поступает именно так, да.
Вот простенькое сравнение поведения массивов и объектов.
Массивы:
var myarray = []; //Короткая форма объявления массива
myarray[1] = "firstvalue";
myarray["key"] = "secondvalue";
console.log(myarray);
console.log(myarray.toString());
Объекты:
var myobject= {}; //Короткая форма объявления объекта
myobject[1] = "firstvalue";
myobject["key"] = "secondvalue";
console.log(myobject);
console.log(myobject.toString());
Еще деталь - массивы, в отличие от объектов, имеют набор нативных функций вроде push и split. Эти функции наследуются от общего предка массивов, и через перебор по for in их не увидишь.
Вот здесь подробности.