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

Комментарии 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 расширяется двумя объектами?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории