Exportación de objetos en módulos mediante closures en JavaScript
Supongamos que tenemos el siguiente módulo:
;(function() {
function func1() {
alert('module funcion');
}
function func2() {
alert('module funcion');
}
function func3() {
alert('module funcion');
}
})();
Supongamos que queremos exportar las tres funciones. En este caso, para no multiplicar nombres de funciones innecesarios fuera del módulo, es mejor guardar todas las funciones en un objeto y exportar este objeto:
;(function() {
function func1() {
alert('module funcion');
}
function func2() {
alert('module funcion');
}
function func3() {
alert('module funcion');
}
window.module = {func1: func1, func2: func2, func3: func3};
})();
Dado que los nombres de las claves y las variables coinciden, el objeto con las funciones se puede simplificar:
;(function() {
function func1() {
alert('module funcion');
}
function func2() {
alert('module funcion');
}
function func3() {
alert('module funcion');
}
window.module = {func1, func2, func3};
})();
También se puede seguir otro camino. Guardaremos las funciones en el objeto directamente al definirlas, de esta manera:
;(function() {
let module = {};
module.func1 = function() {
alert('module funcion');
}
module.func2 = function() {
alert('module funcion');
}
module.func3 = function() {
alert('module funcion');
}
window.module = module;
})();
Se da el siguiente módulo:
;(function() {
let str1 = 'module variable';
let str2 = 'module variable';
let str3 = 'module variable';
function func1() {
alert('module funcion');
}
function func2() {
alert('module funcion');
}
function func3() {
alert('module funcion');
}
function func4() {
alert('module funcion');
}
function func5() {
alert('module funcion');
}
})();
Exporta un objeto con las primeras cinco funciones y las dos primeras variables.