Как реализованы 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
в "набор" методов?