Подтвердить что ты не робот

Почему объекты, подобные массиву, используются в Javascript Over Native Array

В Javascript очень часто встречаются объекты Array-Like с некоторым сходством со строкой в ​​массиве Array, но без всех его методов или функций. Настолько, что есть некоторые трюки для преобразования объектов Array-Like в "реальные" массивы для дальнейших манипуляций.

Это даже упоминается в Javascript: окончательное руководство.

Вопросы почему эта картина так распространена? Почему бы не использовать встроенный тип массива во всех этих случаях?

4b9b3361

Ответ 1

Ну, говоря о основных объектах Javascript, arguments - хороший пример для обсуждения.

В этом случае он был объектом типа массива с самого начала, который появился в спецификации ECMAScript 1th Edition уже как простой объект.

Почему? Я думаю, что в то время было всего четыре встроенных метода Array, и, возможно, разработчик не думал, что это слишком сильно изменилось, позже было предложено изменение, но Microsoft (часть комитета TC39) не одобрила изменения, страх перед нарушением сети всегда присутствовал.

Теперь я собираюсь разместить объекты, DOM, NodeLists, я думаю, что они не хотели использовать собственный тип Array из-за динамического поведения этих объектов.

NodeLists обычно являются живыми объектами, их структура отражает любые изменения в базовой структуре DOM...

Лично мне нравятся объекты массива, потому что они очень легкие, до ECMAScript 5 в основных методах было много ограничений, связанных с использованием пользовательских объектов, подобных массиву.

Например, метод объектов apply объектов функции в ECMAScript <= 3 разрешил только реальный массив или объект аргументов в качестве второго аргумента, теперь в ES5, возможно следующее:

var arrayLike = {0: 'hello ', 1:'world', length:2};
(function (a,b) { alert(a+b); }).apply(null, arrayLike);

См. также: