По коду выше прекрасно видно, что эти конструкции совершенно равнозначны. Единственное отличие - возможность chaining'а при таком объявлении методов, что иногда бывает удобно.
Если одинаково эффективно, следует выбрать из вариантов тот, что повсеместно принято использовать. Использование же нестандартных конструкций в коде просто так, без каких-либо конкретных преимуществ - это пустой выпендрёж.
Ты. Если работаешь над проектом один. А вот при работе в команде это может нанести очень серьёзный вред - этот вариант мягко говоря выглядит неинтуитивно.
Во-вторых - недостаток прописыванию методов в prototype без with вы привели лишь один - "здесь неприятно многократное повторение Test.prototype". А в конечном варианте "prototype" всё равно повторяете. Выглядит не намного красивее, зато добавляет уродливый оператор с присваиванием в его аргументе. И вы называете это грамотным подходом?
"Code Complete" у меня есть английская в pdf (5mb), просто никак времени не найду. :) Она ведь еще здоровая такая! 912 страниц! Много уже прочитал?
Крокфорда читал, как же. :) Но еще больше мне нравится читать (как книгу) сам исходный код известных библиотек (Prototype, Mootools, YUI) - очень много интересного.
Да, много хорошего слышал про книгу - надо бы прочитать. А сейчас читаю не менее культовую "Pragmatic Programmer" Дэйва Томаса и Энди Ханта.
Кстати, насчёт Ruby/Rails - лично меня совершенно восхищает Ruby как язык, мне невероятно нравится на нём программировать - при этом за рельсы я всерьёз до сих пор не взялся за полтора года знакомства с Ruby - пока что не так интересно. :)
А еще меня восхищает как язык JavaScript (отбросив все стереотипы).
В общем я думаю, что великолепные результаты получаются у программиста в том случае, если ему нравится процесс, если есть настоящее увлечение и энтузиазм, - а это зависит от его вкусов в гораздо большей мере, чем самих языков.
Во-первых, вместо того, чтобы грузить сервер, sIFR серьёзно грузит клиент - это не намного лучше.
Во-вторых, sIFR для отображения сайта так, как задумано дизайном, требует кроме CSS включенного JavaScript и Flash, в то время как IR - только CSS.
В-третьих, область применения IR куда шире - воспользоваться sIFR'ом во многих случаях просто не выйдет.
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
};
По коду выше прекрасно видно, что эти конструкции совершенно равнозначны. Единственное отличие - возможность chaining'а при таком объявлении методов, что иногда бывает удобно.
Там и про with, и про конструктор Function, который ты тоже используешь, и много чего другого полезного. Думаю, откроешь для себя много нового.
Использование with в JavaScript считается таким же дурным тоном, как масовое использование глобальных переменных или goto в других языках.
Во-вторых - недостаток прописыванию методов в prototype без with вы привели лишь один - "здесь неприятно многократное повторение Test.prototype". А в конечном варианте "prototype" всё равно повторяете. Выглядит не намного красивее, зато добавляет уродливый оператор с присваиванием в его аргументе. И вы называете это грамотным подходом?
Крокфорда читал, как же. :) Но еще больше мне нравится читать (как книгу) сам исходный код известных библиотек (Prototype, Mootools, YUI) - очень много интересного.
Кстати, насчёт Ruby/Rails - лично меня совершенно восхищает Ruby как язык, мне невероятно нравится на нём программировать - при этом за рельсы я всерьёз до сих пор не взялся за полтора года знакомства с Ruby - пока что не так интересно. :)
А еще меня восхищает как язык JavaScript (отбросив все стереотипы).
В общем я думаю, что великолепные результаты получаются у программиста в том случае, если ему нравится процесс, если есть настоящее увлечение и энтузиазм, - а это зависит от его вкусов в гораздо большей мере, чем самих языков.
Во-вторых, sIFR для отображения сайта так, как задумано дизайном, требует кроме CSS включенного JavaScript и Flash, в то время как IR - только CSS.
В-третьих, область применения IR куда шире - воспользоваться sIFR'ом во многих случаях просто не выйдет.