Izvoz objekta u modulima preko zatvorenja u JavaScript-u
Recimo da imamo sledeći modul:
;(function() {
function func1() {
alert('module function');
}
function func2() {
alert('module function');
}
function func3() {
alert('module function');
}
})();
Recimo da želimo da izvezemo sve tri funkcije. U ovom slučaju, da ne bismo stvarali previše imena funkcija izvan modula, bolje je sve funkcije upisati u jedan objekat i izvršiti izvoz tog 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};
})();
Pošto se imena ključeva i promenljivih poklapaju, objekat sa funkcijama se može pojednostaviti:
;(function() {
function func1() {
alert('module function');
}
function func2() {
alert('module function');
}
function func3() {
alert('module function');
}
window.module = {func1, func2, func3};
})();
Možemo ići i drugim putem. Funkcije ćemo upisivati u objekat odmah prilikom definisanja funkcije, ovako:
;(function() {
let module = {};
module.func1 = function() {
alert('module function');
}
module.func2 = function() {
alert('module function');
}
module.func3 = function() {
alert('module function');
}
window.module = module;
})();
Dat je sledeći 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');
}
})();
Izvezite objekat sa prvih pet funkcija i prve dve promenljive.