Namespace и джаваскрипт
Сегодня решил привести в порядок свои джаваскрипт функции. Заметил что все мои функции - глобальные. Это не очень хорошо и сейчас я покажу как этого избежать. Для этого я создам объект-функцию которая запустит саму себя и вернёт другие функции, которые будут жить в нужном мне именном пространстве.
Лучше всего выбирать имя как и у проекта. В моём случае пронстранство имени будет "AjaxRussia". И так, поехали.
-
var AjaxRussia = function() {
-
-
var site_name = "AjaxRussia";
-
-
function getSiteName() {
-
return site_name;
-
}
-
-
return {
-
sayHello: function() {
-
alert("hello "+getSiteName());
-
},
-
-
sayBye: function() {
-
alert("bye "+getSiteName());
-
}
-
};
-
}();
Теперь, когда у нас есть namespace, можно вызывать эти две функции:
-
AjaxRussia.sayHello(); // hello AjaxRussia
-
AjaxRussia.sayBye(); // bye AjaxRussia
А вот функцию getSiteName() нельзя вызвать извне. Так же как и переменную site_name.
Подробнее про namespaces и приватные функции и переменные в джаваскрипте можно прочитать в статье Douglas Crockford-a или Dustin Diaz-a. Dustin Diaz кстати - эксперт по интерфейсам пользователя на Google и недавно написал интересную книгу Pro JavaScript Design Patterns. Кто нибудь видел pdf? А то придётся купить. ![]()
4 Comments so far
Leave a reply
Спасибо за совет!
Кстати, не подскажите толковых книг по JS на русском ?
Пока толковые книги переводят на русский - они уже теряют актуальность
http://rapidshare.com/files/82145619/Apress.Pro.JavaScript.Design.Patterns.RETAiL.eBOOk-sUppLeX.rar
Enjoy =)
спасибо!