> При написании библиотек нужно стремиться к тому, чтобы исключить использование вспомогательных библиотек.
Я хочу иметь возможность использовать любые библиотеки, в том числе и плохо написанные и с зависимостями. Обычно я не буду конечно устраивать кашу из Underscore, Lo-Dash, Prototype, MooTools, Signals, Zepto…, но хочется иметь возможность это сделать при необходимости.
Вас не смущает то что в юнит-тесты одной библиотеки пришлось добавить тест на совместимость с другой совершенно перпендикулярной библиотекой? Хорошо что их только две таких смелых, современных, а то пришлось бы побольше тестов написать :)
> Я пока не столкнулся с сиутацией, чтобы нужная мне функция отсутствовала в Sugar
Эта функция может быть нужна не мне, а третьей библиотеке, которая нужна мне. Или могут быть две библиотеки типа SugarJS, но совсем про разное и будут обе нужны непосредственно мне.
> Эта проблема не приведет к непредсказуемым результатам, о которых тут все говорят, а примера привести не могут.
Сами придумайте. Тут ничего особенного, просто кто-то переопределит чей-то метод. Это всеравно что все методы underscore вынести из _ в window. Ну будут же конфликты, согласитесь.
Или вы предлагаете принцип что только одна библиотека может расширять прототипы? Но кто решает кому можно, а кому нельзя?
Повторюсь, может проблемы не такие уж и серьезные, и может их можно избегать путем договоренностей (внутри команды, между майнтейнерами библиотек и т.д.) Но зачем всё это нужно если можно просто не трогать прототипы?
При любой осторожности проблемы будут, может меньше и реже, но будут. Зачем использовать подход который пораждает проблемы и требует дополнительной осторожности? В javascript и без того нужна большая осторожность, особенно для новичков.
И ради чего? Всего-то чтобы кое-где на пару символов меньше кода написать.
Еще github.com/ananthakumaran/webify кажется не упоминали, правда про него вообще ничего не могу сказать.
Я хочу иметь возможность использовать любые библиотеки, в том числе и плохо написанные и с зависимостями. Обычно я не буду конечно устраивать кашу из Underscore, Lo-Dash, Prototype, MooTools, Signals, Zepto…, но хочется иметь возможность это сделать при необходимости.
И вы не на весь комментарий ответили.
Эта функция может быть нужна не мне, а третьей библиотеке, которая нужна мне. Или могут быть две библиотеки типа SugarJS, но совсем про разное и будут обе нужны непосредственно мне.
> Эта проблема не приведет к непредсказуемым результатам, о которых тут все говорят, а примера привести не могут.
Сами придумайте. Тут ничего особенного, просто кто-то переопределит чей-то метод. Это всеравно что все методы underscore вынести из _ в window. Ну будут же конфликты, согласитесь.
Или вы предлагаете принцип что только одна библиотека может расширять прототипы? Но кто решает кому можно, а кому нельзя?
Повторюсь, может проблемы не такие уж и серьезные, и может их можно избегать путем договоренностей (внутри команды, между майнтейнерами библиотек и т.д.) Но зачем всё это нужно если можно просто не трогать прототипы?
И ради чего? Всего-то чтобы кое-где на пару символов меньше кода написать.
а что по повоу «Это глобальная область видимости. Будут конфликты рано или поздно.»?
более лучший вариант: