Пост разумеется не о деньгах, а о функции $() - заменяющей и немного добавляющей функциональности стандартной document.getElementById. Она используется и в бибилиотеке prototype как ключевая(правда там в ней еще больше функциональности добавили) и ее же советуют профессионалы, как например здесь: http://www.rusdoc.ru/go.php?http://www.realcoding.net/articles_html/javascript_best_user_functions.html приведен неплохой код:
function $() {
var elements = new Array();
for (var i = 0; i < arguments.length; i++) {
var element = arguments[i];
if (typeof element == `string`)
element = document.getElementById(element);
if (arguments.length == 1)
return element;
elements.push(element);
}
return elements;
}
// Sample Usage:
var obj1 = document.getElementById(`element1`);
var obj2 = document.getElementById(`element2`);
function alertElements() {
var i;
var elements = $(`a`,`b`,`c`,obj1,obj2,`d`,`e`);
for ( i=0;i < elements.length;i++ ) {
alert(elements[i].id);
}
}
В итоге вместо громоздких document.getElementById(`id1`) можно использовать короткую запись - $(`id1`) - ну почти переменная в php :) . Буквально 15 минут назад я внес в главный яваскриптовый файл проекта эту функцию, поправил один небольшой(200 строчек) яваскрипт-модуль заменив везде document.getElementById на $ и взглянул на код. Разумеется, он стал более наглядным и красивым. Многие длинные строчки существенно сократились.
Однако, перед тем как рассказывать всем в команде(среди которой есть и совсем неопытные студенты), я немного задумался. Слишком уж запись $(`id1`) похожа на запись простой переменной - особенно если учесть что мы пишем и на php. :) Это может привести к страшной деоптимизации кода.
Видя document.getElementById - даже неопытные программисты осознают, что это функция и она реально чтото вычисляет, чтобы потом выдать элемент. А видя $(`id1`) такого осознания нет и это может привести, например к постоянному ее вызову в цикле, что-нибудь в этом роде :
for(var i=0;i<10000;i++)
{
if($(`id1`).value==i)
{
...
}
}
.............
for(var i=0;i<10000;i++)
{
if(document.getElementById(`id1`).value==i)
{
...
}
}
Отбросим глупость цикла и условия внутри. Во втором случае, у меня наверняка возникнет ощущение, что чтото тут не так, чего нельзя сказать о первом. Все это конечно, довольно абстрактно и ничего конкретного в этой мысли нет, но делать эту функцию стандартной для всего проекта я пока не стану...