Eksport af et objekt i moduler via closures i JavaScript
Lad os sige, at vi har følgende modul:
;(function() {
function func1() {
alert('module function');
}
function func2() {
alert('module function');
}
function func3() {
alert('module function');
}
})();
Lad os sige, at vi vil eksportere alle tre funktioner udadtil. I dette tilfælde, for ikke at skabe for mange unødvendige funktionsnavne uden for modulet, er det bedre at gemme alle funktionerne i et enkelt objekt og udføre eksport af dette objekt:
;(function() {
function func1() {
alert('module function');
}
function func2() {
alert('module function');
}
function func3() {
alert('module function');
}
window.module = {func1: func1, func2: func2, func3: func3};
})();
Da nøglenavnene og variabelnavnene er de samme, kan objektet med funktionerne forenkles:
;(function() {
function func1() {
alert('module function');
}
function func2() {
alert('module function');
}
function func3() {
alert('module function');
}
window.module = {func1, func2, func3};
})();
Man kan også gøre det på en anden måde. Vi kan gemme funktionerne i objektet med det samme, når funktionen beskrives, sådan her:
;(function() {
let module = {};
module.func1 = function() {
alert('module function');
}
module.func2 = function() {
alert('module function');
}
module.func3 = function() {
alert('module function');
}
window.module = module;
})();
Følgende modul er givet:
;(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');
}
})();
Eksporter et objekt med de første fem funktioner og de første to variable udadtil.