Сообщение от float
|
я отталкивался от предположения, что массив это участок в памяти, а new Array(n) его выделяет.
|
В JavaScript массив это обычный объект, у которого переопределён внутренний метод [[Set]], который следит за свойством length и за числовыми свойствами.
Правила такие
При установке свойства length удаляются числовые свойства больше либо равные новому length.
При установке числового свойства, если length не больше этого свойства, то length устанавливается на единицу больше этого свойства.
Отрицательный length, кстати, присвоить нельзя.
Некоторые следствия из этих правил.
Свойство length равно количеству элементов в массиве только при аккуратной работе с массивом (нет пропусков элементов). В общем случае length всегда больше максимального индекса в массиве.
Чтобы очистить массив, достаточно свойству length присвоить 0.