вопрос про анонимную функцию
var Controller = {};
(Controller.user = function($) { / * какой-то код */ })(jQuery); В книге написано, что используется анонимная функция для инкапсулирования области действия и предотвращения загрязнения глобальной области действия. вопрос такой, зачем ее засовывать в анонимную функцию, если все что находится внутри Controller.user находится в области деятсвия объекта Controller? т.е по идее глобальный объект не зосорится.... объясните пожалуйста великие гуру) |
вы неправильную книжку читаете.
вы вызываете анонимную в контесте джиквери для расширения библиотеки. объект незачем-если речь идёт о расширении джиквери,а в остальном -хрен его знает какие тараканы в голове у автора книги,мои с ними симпозиум по обмену опытом не устраивали :) |
Цитата:
Это понятно, просто не понятно почему он оборачивает Controller.user, а не сам Controller.
(function(){
var Controller = {};
Controller.user = ...
})()
|
Цитата:
|
Цитата:
обычно при присваивании правая часть выражения должна вернуть какой-то результат. Иногда этот результат может быть известным - статичным, или же описываться быстрым, решительным тернарным оператором, а иногда для выпендрёжа могут и анонимную функцию подставить. зачем это делать? а всё просто. такая конструкция используется в шаблоне "модуль" (с нек-и его изменениями, но суть та же). в функции происходит магия, и в конце концов из желудей и спичек ваяется объект\метод\свойство и этим же расширяется объект. для большего просветления, можно написать псевдокод:
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);
|
noname1990,
вы не находите ,что разница между первым и втором вариантами одного кода из книжки глобальная? |
второй вариант это мой, я просто спросил почему нельзя сделать так, т.е обернуть весь Controller.
|
| Часовой пояс GMT +3, время: 21:25. |