Ajax Russia : Аякс по-русски

Свежие новости из мира IT

Namespace и джаваскрипт

jsСегодня решил привести в порядок свои джаваскрипт функции. Заметил что все мои функции - глобальные. Это не очень хорошо и сейчас я покажу как этого избежать. Для этого я создам объект-функцию которая запустит саму себя и вернёт другие функции, которые будут жить в нужном мне именном пространстве.

Лучше всего выбирать имя как и у проекта. В моём случае пронстранство имени будет "AjaxRussia". И так, поехали.

JavaScript:
  1. var AjaxRussia = function() {
  2.  
  3.   var site_name = "AjaxRussia";
  4.  
  5.   function getSiteName() {
  6.     return site_name;
  7.   }
  8.  
  9.   return {
  10.     sayHello: function() {
  11.       alert("hello "+getSiteName());
  12.     },
  13.  
  14.     sayBye: function() {
  15.       alert("bye "+getSiteName());
  16.     }
  17.   };
  18. }();

Теперь, когда у нас есть namespace, можно вызывать эти две функции:

JavaScript:
  1. AjaxRussia.sayHello()// hello AjaxRussia
  2. AjaxRussia.sayBye()// bye AjaxRussia

А вот функцию getSiteName() нельзя вызвать извне. Так же как и переменную site_name.

Подробнее про namespaces и приватные функции и переменные в джаваскрипте можно прочитать в статье Douglas Crockford-a или Dustin Diaz-a. Dustin Diaz кстати - эксперт по интерфейсам пользователя на Google и недавно написал интересную книгу Pro JavaScript Design Patterns. Кто нибудь видел pdf? А то придётся купить. :)

del.icio.us Забобрить!

4 Comments so far

  1. Денис Радченко January 7th, 2008 15:17

    Спасибо за совет!
    Кстати, не подскажите толковых книг по JS на русском ?

  2. Aleksandr January 8th, 2008 09:55

    Пока толковые книги переводят на русский - они уже теряют актуальность :)

  3. xpundel January 10th, 2008 14:19
  4. Aleksandr January 10th, 2008 19:35

    спасибо! ;)

Leave a reply