Код Предоставлена пример module pattern. В частности, это пример loose augmentation шаблона модуля.
Шаблон модуля в основном просто immediately invoked function expression (IIFE), который возвращает объект. Например:
// file 1
var MODULE = (function() {
var my = {}, privateVariable = 1;
function privateMethod() {
// ...
}
my.moduleProperty = 1;
my.moduleMethod = function() {
// ...
};
return my;
}());
Augmentation позволяет разделить модуль на части. Каждая часть может находиться в собственном файле. Например, мы можем дополнить вышеуказанный модуль следующим образом:
// file 2
var MODULE = (function (my) {
my.anotherMethod = function() {
// added method...
};
return my;
}(MODULE));
Однако в этой модели увеличения file 1
должны быть загружены до file 2
, иначе вы получите сообщение об ошибке. Loose augmentation позволяет загружать файлы в любом порядке.
var MODULE = (function (my) {
// add capabilities...
return my;
}(MODULE || {}));
В приведенном выше примере модуль MODULE
может быть разделен на несколько файлов, которые могут быть загружены в любом порядке. Выражение MODULE || {}
оценивается как MODULE
, если оно существует. В противном случае он оценивается до {}
.
Следовательно, для первого загруженного файла выражение будет оцениваться как {}
, потому что MODULE
изначально будет undefined
. В последующих файлах выражение будет оцениваться как MODULE
.
В чем вопрос? – mishik