Как стать автором
Обновить

Комментарии 14

НЛО прилетело и опубликовало эту надпись здесь
интересная статья

офф: картинка на лого — видел на каком-то моющем средстве. серьезно :)
Image Hosted by ImageShack.us
кстати, на тему классов: groups.google.ru/group/jfix-javascript-framework/browse_thread/thread/2bfec344ca3c1106?hl=ru

меня всегда угнетала эта копипаста вида PageBase.prototype…

ну и такие загогулины: ViewBase.prototype._Init = function(){ throw «ViewBase._Init is not implemented.»; }
зачем наследовать метод, который кидает исключение «метод не определён»? не надо тащить в яваскрипт костыли из статических языков!
Cпасибо за комментарий. Действительно, в JavaScript описания классов в стиле статических языков выглядят не лучшим образом. Все-таки, JavaScript — прототипный язык программирования.

Я использую такой стиль описания классов, потому что нотация статических языков мне привычнее и понятнее. Так же есть положительный опыт применения именно такой нотации на практике.

Повторений PageBase.prototype, действительно, можно избежать вот так:

PageBase.prototype = { Init: function() {… }, _PageLoad: function() {… } }

Однако, так нельзя сделать в подклассах из-за особенностей OO.Extends.

Насчет исключений в абстрактных методах — это просто coding rule. Такие методы сразу видно в коде. Self-documented code. Никакой функциональной нагрузки тут нет.
а чего в OO.Extends такого особенного, что под неё нужно подстраивать весь код?
Она делает PageBase.prototype = { *base_class_members* } после чего мы своим аналогичным присваиванием затираем в прототипе базовые методы.

Вариант: использовать jQuery.extend.

Для удобства выложил OO.js, содержащий метод Extends, в отдельный файл.

то есть ровно то же самое: pastebin.mozilla-russia.org/93134
даже так: pastebin.mozilla-russia.org/93135
Да, только действия по созданию подкласса вынесены в OO.Extends.
не создания, а только наследования. которое достигается прописыванием одного единственного свойства. зачем для этого отдельная функция?
По единственной причине: код более читаемый. Сразу видно кто от кого extends.
и гигантская простыня из копипасты…

и совершенно не видно, кто от кого «extends»… первый объект от второго, или второй от первого? или может OO расширяется двумя объектами?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории