Izvoz objekta v modulih s pomočjo zaprtij v JavaScript
Recimo, da imamo naslednji modul:
;(function() {
function func1() {
alert('module function');
}
function func2() {
alert('module function');
}
function func3() {
alert('module function');
}
})();
Recimo, da želimo izvoziti vse tri funkcije. V tem primeru, da ne ustvarjamo odvečnih imen funkcij zunaj modula, je bolje zapisati vse funkcije v en objekt in izvesti izvoz tega objekta:
;(function() {
function func1() {
alert('module function');
}
function func2() {
alert('module function');
}
function func3() {
alert('module function');
}
window.module = {func1: func1, func2: func2, func3: func3};
})();
Ker se imena ključev in spremenljivk ujemajo, lahko objekt s funkcijami poenostavimo:
;(function() {
function func1() {
alert('module function');
}
function func2() {
alert('module function');
}
function func3() {
alert('module function');
}
window.module = {func1, func2, func3};
})();
Lahko nadaljujemo tudi na drug način. Funkcije zapišemo v objekt takoj pri opisu funkcije, takole:
;(function() {
let module = {};
module.func1 = function() {
alert('module function');
}
module.func2 = function() {
alert('module function');
}
module.func3 = function() {
alert('module function');
}
window.module = module;
})();
Podan je naslednji modul:
;(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');
}
})();
Izvozi objekt s prvih petimi funkcijami in prvima dvema spremenljivkama.