Как реализованы JavaScript-массивы?

А именно как работает следующий код:

var sup = new Array(5);
sup[0] = 'z3ero';
sup[1] = 'o3ne';
sup[4] = 'f3our';
document.write(sup.length + "<br />");

выведите «5» для длины, когда все, что вы сделали, это установили различные элементы?

Моя «проблема» с этим кодом в том, что я не понимаю, какlength меняется без вызоваgetLength() илиsetLength() метод. Когда я делаю любое из следующего:

a.length
a['length']
a.length = 4
a['length'] = 5

на объекте, не являющемся массивом, он ведет себя как диктованный / ассоциативный массив. Когда я делаю это на объекте массива, это имеет особое значение. Какой механизм в JavaScript позволяет этому случиться? Есть ли в javascript система свойств, которая переводит

a.length
a['length']

в "получить" методы и

a.length = 4
a['length'] = 5

в "набор" методов?

Ответы на вопрос(8)

Ваш ответ на вопрос