вопрос про анонимную функцию
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, время: 06:37. |