Цитирование спецификации
15.4 Объекты массива
Объекты-массивы придают особое значение определенному классу имен свойств. Имя свойства P (в виде строкового значения) является индексом массива тогда и только тогда, когда ToString(ToUint32(P)) равно P, а ToUint32(P) не равно 2^32-1. Свойство, имя свойства которого является индексом массива, также называется элементом. Каждый объект Array имеет свойство длины, значение которого всегда является неотрицательным целым числом, меньшим 2^32. Значение свойства length численно больше, чем имя каждого свойства, имя которого является индексом массива; всякий раз, когда свойство объекта Array создается или изменяется, другие свойства настраиваются по мере необходимости, чтобы сохранить этот инвариант. В частности, всякий раз, когда добавляется свойство, имя которого является индексом массива, свойство длины при необходимости изменяется, чтобы быть на единицу больше, чем числовое значение этого индекса массива; и всякий раз, когда изменяется свойство длины, каждое свойство, имя которого является индексом массива, значение которого не меньше новой длины, автоматически удаляется. Это ограничение применяется только к собственным свойствам объекта Array и не зависит от свойств длины или индекса массива, которые могут быть унаследованы от его прототипов.
А вот таблица для typeof
Чтобы добавить немного фона, в JavaScript есть два типа данных:
- Примитивные типы данных. Сюда входят null, undefined, string, boolean, number и object.
- Производные типы данных/специальные объекты. К ним относятся функции, массивы и регулярные выражения. И да, все они получены из «Объекта» в JavaScript.
Объект в JavaScript похож по структуре на ассоциативный массив/словарь, встречающийся в большинстве объектно-ориентированных языков, т. е. он имеет набор пар ключ-значение.
Массив можно рассматривать как объект со следующими свойствами/ключами:
- Длина. Может быть 0 или выше (неотрицательное значение).
- Индексы массива. Под этим я подразумеваю, что «0», «1», «2» и т. д. — все это свойства объекта массива.
Надеюсь, это помогло пролить больше света на то, почему typeof Array возвращает объект. Ваше здоровье!
person
Prinzhorn
schedule
21.10.2012
typeof
, но вы можете использоватьArray.isArray
. - person pimvdb   schedule 21.10.2012