Что касается core объектов Javascript, arguments
является хорошим примером для разговора.
В данном случае это был массивоподобный объект с самого начала появилась в спецификации ECMAScript 1-го издания уже как простой объект.
Почему?Я думаю, что в то время было только четыре встроенных метода Array
, и, возможно, дизайнер не думал, что это слишком много, позже было предложено изменение, но Microsoft (часть комитета TC39) не одобрилаизменить, страх взлома сети всегда присутствовал.
Теперь я собираюсь хост-объекты , DOM, NodeLists
приходят мне на ум, я думаюони не хотели использовать собственный тип Array
из-за динамического поведения этих объектов.
NodeLists
обычно являются живыми объектами, их структура отражает любые изменения в базовом объекте.Структура DOM ...
Лично мне нравятся объекты массива, потому что они действительно легковесные, до ECMAScript 5, было много ограничений в основных методах, касающихся использования пользовательских объектов, подобных массиву.
Например, метод функциональных объектов apply
в ECMAScript <= 3 допускает только реальный массив или объект аргументов в качестве второго аргумента, теперь в ES5, foвозможно: </p>
var arrayLike = {0: 'hello ', 1:'world', length:2};
(function (a,b) { alert(a+b); }).apply(null, arrayLike);
См. также: