Я пытаюсь понять этот код у другого разработчика, и моего знания JavaScript не хватает. Предполагается, что эта функция принимает меню заголовка сайта и преобразует его в меню мобильного стиля.Выражение функции в JavaScript confusion
Я понимаю, почему jQuery передается как $
. Я не понимаю, как переменная CPCU
передается обратно в себя или почему она возвращается как CPCU || {}
. Может ли кто-нибудь помочь мне понять, как переменная CPCU
работает в этой ситуации?
var CPCU = (function (_cpcu, $) {
'use strict';
/**
* Mobile Menu
*/
var mmenu = _cpcu.Menu.mobile = _cpcu.Menu.mobile || {};
// Properties.
mmenu.id = '#mobile-menu';
mmenu.el = $('');
mmenu.api = {};
mmenu.button = '#header-content .menu.button';
mmenu.aniClass = 'animate';
mmenu.opts = {
slidingSubmenus: false
};
mmenu.config = {
classNames: {
selected: 'active'
}
};
// Methods.
mmenu.init = function() {
mmenu.el = $(mmenu.id);
// Move the active class to from the A to the LI, must happen before mmenu init.
$('#mobile-menu').find('a.active').parent('li').addClass('active');
// Now we can init the menu. otherwise it doesn't pick up the active LI.
mmenu.api = mmenu.el.mmenu(mmenu.opts, mmenu.config).data('mmenu');
mmenu.button = $(mmenu.button);
mmenu.button.data('lines', $('.line1,.line2,.line3'));
mmenu.button.click(function() {
mmenu.api.open();
});
mmenu.api.bind('open', function() {
mmenu.button.data('lines').addClass(mmenu.aniClass);
});
mmenu.api.bind('close', function() {
mmenu.button.data('lines').removeClass(mmenu.aniClass);
});
};
// Set up doc ready.
$(document).ready(function() {
mmenu.init();
});
return _cpcu;
})(CPCU || {}, jQuery);
Посмотрите на этот родственный вопрос: [Что делает "var FOO = FOO || {} "(Назначить переменную или пустой объект этой переменной) в Javascript?] (Http://stackoverflow.com/questions/6439579/what-does-var-foo-foo-assign-a-variable-or -an-empty-object-to-that-va) –