Показать сообщение отдельно
  #5 (permalink)  
Старый 19.06.2012, 11:19
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от noname1990
var Controller = {};
(Controller.user = function($)
{
/ * какой-то код */
})(jQuery);

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

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

зачем это делать? а всё просто. такая конструкция используется в шаблоне "модуль" (с нек-и его изменениями, но суть та же). в функции происходит магия, и в конце концов из желудей и спичек ваяется объект\метод\свойство и этим же расширяется объект.

для большего просветления, можно написать псевдокод:
var Controller = {};
Controller.user = (function($) {
    var private; // приват.
    return { readOnly: private }
})(jQuery);


и тут я заметил одно ... скобка та не там стоит. ТС написал текстом одно, а в коде другое совершенно

var Controller = {};
(Controller.user = function($)
{
/ * какой-то код */
})(jQuery);

// ----> 
var Controller = {};
(Controller.user = function($) {/ * какой-то код */ })(jQuery);

здесь вообще просто вызывается функция, которая записалась как метод Controller.
КОд аналогичен следующему:
var Controller = {};
Controller.user = function($) {/ * какой-то код */ };
Controller.user(jQuery);
Ответить с цитированием