Експорт на објект во модули преку затворања во JavaScript
Да претпоставиме дека го имаме следниот модул:
;(function() {
function func1() {
alert('module function');
}
function func2() {
alert('module function');
}
function func3() {
alert('module function');
}
})();
Да претпоставиме дека сакаме да ги експортираме сите три функции. Во овој случај, за да не создаваме надвор од модулот вишок имиња на функции, подобро е да ги запишеме сите функции во еден објект и да го извршиме експортот на тој објект:
;(function() {
function func1() {
alert('module function');
}
function func2() {
alert('module function');
}
function func3() {
alert('module function');
}
window.module = {func1: func1, func2: func2, func3: func3};
})();
Бидејќи имињата на клучевите и променливите се совпаѓаат, објектот со функции може да се поедностави:
;(function() {
function func1() {
alert('module function');
}
function func2() {
alert('module function');
}
function func3() {
alert('module function');
}
window.module = {func1, func2, func3};
})();
Може да се појде и на друг начин. Ќе ги запишуваме функциите во објект веднаш при опишувањето на функцијата, вака:
;(function() {
let module = {};
module.func1 = function() {
alert('module function');
}
module.func2 = function() {
alert('module function');
}
module.func3 = function() {
alert('module function');
}
window.module = module;
})();
Даден е следниот модул:
;(function() {
let str1 = 'module variable';
let str2 = 'module variable';
let str3 = 'module variable';
function func1() {
alert('module function');
}
function func2() {
alert('module function');
}
function func3() {
alert('module function');
}
function func4() {
alert('module function');
}
function func5() {
alert('module function');
}
})();
Експортирајте надвор објект со првите пет функции и првите две променливи.