Сообщение от 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);