#javascript
Почему массив stage.days возвращает длину 0, но итерация по нему идёт как по объекту? Его тип Array с длиной 0. var stage = { days: [] }; stage.days['11-2']= []; stage.days['11-3']= []; alert(stage.days.length); // 0 for(var it in stage.days){ debugger // stage.days['11-2'] }
Ответы
Ответ 1
Ответ на ваш вопрос дают следующие две статьи: Массивы с числовыми индексами Массив – разновидность объекта, которая предназначена для хранения пронумерованных значений и предлагает дополнительные методы для удобного манипулирования такой коллекцией. Работа с объектами в JavaScript: теория и практика В JavaScript есть 6 базовых — это Undefined (обозначающий отсутствие значения), Null, (булев тип), (строка), Number (число) и Object (объект). При этом первые 5 являются примитивными типами данных, а Object — нет. Кроме того, условно можно считать, что у типа Object есть «подтипы»: массив (Array), функция (Function), регулярное выражение (RegExp) и другие. Это несколько упрощенное описание, но на практике обычно достаточное. И простой эксперимент: console.log(typeof []); // "object" Дополнительно прочитайте статью "Наследование классов в JavaScript". Там как раз рассмотрен случай наследования Array от Object. Не менее полезно будет прочитать статью "Объекты как ассоциативные массивы" (спасибо @AlexKrass за наводку).
Комментариев нет:
Отправить комментарий