Вызов объекта из анонимной функции. Подскажите как работает код.
Здравствуйте. Наткнулся на такой код.
Не могу понять как работает, это замыкание? Буду раз любой ссылке или подсказке.
(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, время: 18:48. |