В основном из-за коллизий пространства имен.Я знаю, что у инфраструктуры прототипов было много проблем с сохранением их имен отличными от тех, которые были включены изначально.
Существует два основных способа предоставления утилит людям ..
Прототипирование
Добавление функции в прототип объекта.MooTools и Prototype делают это.
Преимущества:
- Супер легкий доступ.
Недостатки:
- Можно использоватьмного системной памяти.В то время как современные браузеры просто извлекают экземпляр свойства из конструктора, некоторые старые браузеры сохраняют отдельный экземпляр каждого свойства для каждого экземпляра конструктора.
- Не всегда доступен.
Я имею в виду «недоступно»:
Представьте, что у вас есть NodeList от document.getElementsByTagName
, и вы хотите перебрать его.Вы не можете сделать ..
document.getElementsByTagName('p').map(function () { ... });
.. потому что это NodeList, а не Array.Выше приведено сообщение об ошибке типа: Uncaught TypeError: [object NodeList] doesn't have method 'map'
.
Следует отметить, что существуют очень простые способы преобразования объектов NodeList и других объектов, подобных массивам, в реальные массивы.
Сбор
Создание новой глобальной переменной и утилит складирования на ней.Это делают jQuery и Dojo.
Преимущества:
- Всегда там.
- Низкое использование памяти.
Недостатки:
- Не так хорошо расположен.
- Может быть неудобно использовать время от времени.
С этим методом вы все равно не справитесь ..
document.getElementsByTagName('p').map(function () { ... });
.. но вы могли бы сделать ..
jQuery.map(document.getElementsByTagName('p'), function () { ... });
.. но, как указал Мэтт, при обычном использовании вы бы сделали выше с ..
jQuery('p').map(function () { ... });
Что лучше?
В конечном счете, решать только вам.Если вы согласны с риском перезаписи / перезаписи, я настоятельно рекомендую создать прототип.Это стиль, который я предпочитаю, и я чувствую, что риски стоят результатов.Если вы не уверены в этом, как я, то коллекционирование - это тоже хороший стиль.Они оба имеют свои преимущества и недостатки, но в целом они обычно дают один и тот же конечный результат.