@Topik массив в js в большинстве случаев представлен непрерывной областью памяти, но при необходимости может превращаться в ассоциативный массив из-за некоторых действий над ним или по другим соображениям браузера
массив относится к так называемым special layout objects и имеет сосбсвенное внутреннее устройство
со свойствами у него особая фича - пересчёт length при записи по несуществующему ключи - defineProperty такое не покрывает, но в ES6 появился Proxy, который уже способен это перехватить
@Qwertiy про special layout objects интересно, но не нашел
@Qwertiy Читаю Фланагана и там написано, что массив это объект. А так как объект в js это ассоциативный массив, то вероятно и массив это тоже самое. Но точного ответа так не нашел.
@Topik это особые встроенные объекты, которые чем-то отличаются от обыкновенных. примеры: массив, функция, XMLHttpRequest - их конструкторы создают объект особого вида, который мы не можем создать другим способом из скрипта. именно из-за этого была вывернута наизнанку цепочка создания инстансов ES6-классов и объект создаётся не вызовом конструктора, а самым внутренним конструктором, что позволяет от таких классов наследоваться