На работе мы используем jQuery. Вскоре после того, как мы начали его использовать, я увидел, что пара разработчиков добавляет функции в файл jquery-extensions.js. Внутри я нашел целую кучу методов, добавленных к $
, которые по сути равны статическим методам в jQuery. Вот несколько из них:
$.formatString(str, args) {
...
}
$.objectToArray(obj) {
...
}
Etc. Никто из них на самом деле не использует ничего общего с jQuery . Это показалось мне странным.
В конце концов нам потребовалась функция в нашей библиотеке для локализации дат. Моим решением было создать:
Date.prototype.toLocaleDate = function() {
...
}
Date.parseLocalDate = function() {
...
}
Вскоре после этого ко мне приходит старший разработчик и спрашивает меня, что я делаю. Он говорит мне, что здесь, где я работаю, мы не создаем прототипы, потому что они злые. Единственными причинами, которые он привел, было то, что они в основном плохие языковые возможности, потому что их «можно злоупотреблять» и что сбивает с толку просмотр прототипов (например, откуда я знаю, что новый Date (). ). Используя $.formatString(...)
вместо "blah blah".formatString(...)
, мы ясно понимаем, что все, что с $, не является частью собственного JavaScript.
Эти причины кажутся немного глупыми, но я предложил компромисс, чтобы он не должен был помнить, был ли метод прототипом - префикс имени прототипа функции с $
:
String.prototype.$format = function() {
...
}
"blah blah".$format(...);
Это было быстро отклонено, и теперь мне нужно везде добавлять эти функции $ .myPrototypeAsAFauxStaticMethodOnjQuery ().
Я единственный, кто считает эту практику глупой?