Это сложный вопрос.
Недостатком невероятной гибкости JavaScript является то, что каждый программист и его зять имеют разные способы ведения дел.
Недостатком использования библиотеки для выполнения ООП на основе класса в JavaScript (библиотека прототипов, Moo, Joose, JS.Class, Base2 и т. Д.) Является то, что вы сразу же сокращаете количество коллег-программистов на JavaScript, которые можете прочитать ваш код.
Очевидно, что jQuery побуждает вас мыслить в терминах «коллекций». Коллекция - это то, что вы получаете от вызова $ () или jQuery (). Джон Резиг однажды подумал о добавлении системы классов в jQuery, но в итоге решил не делать этого. Я думаю, он сказал, что ему никогда не требовалась настоящая система «Класс» в программировании на JavaScript.
Для всех, кроме крупнейших JS-проектов, я бы сказал, забудьте о системе Class. Используйте невероятную систему объектов и массивов JS (включая литералы). Пространство имен (как переменные, так и методы).
Мне очень повезло, используя массивы объектов для большинства ситуаций, для которых я обычно использую классы.
Интересное расширение концепции коллекции jQuery содержится в плагине Ариэля Флезлера jQuery.Collection здесь . Это позволяет вам обращаться с «обычными» данными так же, как с данными DOM в jQuery.
Недавно я начал использовать Underscore.js , который предоставляет вам множество функциональных инструментов для обработки ваших данных как коллекций.