Русские документы
Ежедневные компьютерные новости RSS rusdoc.ru  Найти :
Новости
Последние поступления
Книжный магазин
  Hardware:
Видеоустройства
Системные платы
Процессоры
Мобильные устройства
Аудиосистема
Охлаждение системы
Накопители информации
КПК и ноутбуки
Телефоны и связь
Периферия
Система
Сети
Разные устройства
 
  Programming:
Web-разработка
Языки программирования
Технологии и теория
Разработка игр
Программная инженерия
 
  Software:
Операционные системы
Windows 7
Базы данных
Обзоры программ
Графика и дизайн
   
  Life:
Компьютерная жизнь
Разные материалы
   
Партнеры
Публикация
Правовая информация
Реклама на сайте
Обратная связь
Экспорт в RSS Экспорт в RSS2.0
    Читать в Яндекс.Ленте



Использование функции $()

Раздел: Programming / JavaScript @ 17.11.2007 | Ключевые слова: функции JavaScript версия для печати

Автор: Блог Photus
Источник: Realcoding.NET

Пост разумеется не о деньгах, а о функции $() - заменяющей и немного добавляющей функциональности стандартной document.getElementById. Она используется и в бибилиотеке prototype как ключевая(правда там в ней еще больше функциональности добавили) и ее же советуют профессионалы, как например здесь: 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)
    {
        ...
    }
}



Отбросим глупость цикла и условия внутри. Во втором случае, у меня наверняка возникнет ощущение, что чтото тут не так, чего нельзя сказать о первом. Все это конечно, довольно абстрактно и ничего конкретного в этой мысли нет, но делать эту функцию стандартной для всего проекта я пока не стану...

Это интересно:








версия для печатиРаспечатать статью


Вернуться в раздел: Programming / JavaScript


Реклама:
Читать наc на:

Add to Google
Читать в Яндекс.Ленте






Rambler's Top100
© Copyright 1998-2012 Александр Томов. All rights reserved.