Обычно лень такие объёмы читать, но тут читал до конца, спасибо.
> OK, но это JavaScript, и у нас нет классов
Классическое заблуждение. Не буду в милионный раз объяснять, как они делаются, но есть и классы, и наследование (да хотя бы child.prototype = parent.prototype). Впрочем если хотите — объясню.
К тому же обёртки для классов реализованы во многих библиотеках (Mootools, Prototype, Dojo, ExtJS...), есть куча и отдельных реализаций. Приводить список не буду, дам ссылку: habrahabr.ru/post/132698/#comment_4404597
> И в ООП нет ничего, что позволяет решать ту или иную задачу элегантнее
Надеюсь, я вас правильно понял, и под ООП вы понимаете классы и наследование. В таком случае:
var Shape = new Class({
getAttribute:function(name){ return this.props[name] },
setAttribute:function(name,val){ this.props[name] = val }
});
var Rect = new Class(Shape, {
attrHooks:{} // ...
});
Объясните мне, как элегантно решить данную задачу без ООП.
Почему же? Когда люди пишут проект совместно, они как-то договариваются, как писать и что использовать…
Когда я пишу проект, и предполагаю, что код будут смотреть другие люди — я стараюсь писать красиво (вообще всегда стараюсь, но так стараюсь больше).
Но при этом использую то, что (на мой взгляд) подходит больше всего. ООП — использую ООП, императивный стиль — использую его. Задачи разные, решения тоже.
> OK, но это JavaScript, и у нас нет классов
Классическое заблуждение. Не буду в милионный раз объяснять, как они делаются, но есть и классы, и наследование (да хотя бы child.prototype = parent.prototype). Впрочем если хотите — объясню.
К тому же обёртки для классов реализованы во многих библиотеках (Mootools, Prototype, Dojo, ExtJS...), есть куча и отдельных реализаций. Приводить список не буду, дам ссылку: habrahabr.ru/post/132698/#comment_4404597
Надеюсь, я вас правильно понял, и под ООП вы понимаете классы и наследование. В таком случае:
Объясните мне, как элегантно решить данную задачу без ООП.
Когда я пишу проект, и предполагаю, что код будут смотреть другие люди — я стараюсь писать красиво (вообще всегда стараюсь, но так стараюсь больше).
Но при этом использую то, что (на мой взгляд) подходит больше всего. ООП — использую ООП, императивный стиль — использую его. Задачи разные, решения тоже.
Просто однажды увидев арабские письмена, вы их можете легко отличить от любых других иероглифов. Даже от персидских
Евклид например.Я его даже как-то изучал…