Вызов объекта из анонимной функции. Подскажите как работает код.
Здравствуйте. Наткнулся на такой код.
Не могу понять как работает, это замыкание? Буду раз любой ссылке или подсказке. (function(DinePage, $) { DinePage.init = function() { DinePage.autoResizeTopHeight(); $(window).resize(function() { DinePage.autoResizeTopHeight(); }); setTimeout(DinePage.checkResizeHeight, 3000); }; DinePage.autoResizeTopHeight = function() { var height = $('.dine-left').outerHeight(); $('.dine-right').height(height); }; DinePage.hasResized = false; DinePage.checkResizeHeight = function() { var timer = setInterval(function() { if (DinePage.hasResized) { clearInterval(timer); return; } DinePage.autoResizeTopHeight(); DinePage.hasResized = true; }, 3000); }; })(window.DinePage = window.DinePage || {}, jQuery); В функцию передается объект, но при этом он не инициализирован. Вызвается в футере страницы так $(document).ready(function() { DinePage.init(); }); $(document).load(function() { DinePage.autoResizeTopHeight(); }); Спасибо. |
Цитата:
Есть только вызов безымянной функции, которой передается два параметра... |
Передается $ (библиотка - в моем случае jQuery) и DinePage.
DinePage где-то должен объявляться? Как свойство объекта window? Я могу потом обращаться к нему как к глобальному объекту? Зачем нужна такая запись через функцию? почему нельзя было объявить просто объект и присвоить свойствам значения функций? Помогите разобраться пожалуйста. |
Цитата:
Цитата:
Цитата:
window.DinePage = window.DinePage || {}; Это стандартный прием... Кагбэ значение по умолчанию. Цитата:
|
Цитата:
Цитата:
До этого кода нужно сначала инициализировать этот объект и только после этого работать. Цитата:
Если на странице одновременно используется и mootools, и jQuery, то есть вероятность того, что $ будет ссылкой на mootools (или на нечто другое, не являющееся экземпляром jQ). Других причин я не вижу. |
Цитата:
|
Цитата:
|
Цитата:
|
Огромное спасибо за разъяснения.
|
Цитата:
Просто я думал, что большее недоумение у ТСа именно по первому параметру... :) |
Часовой пояс GMT +3, время: 06:08. |