Exportando variáveis e funções em módulos através de closures em JavaScript
Às vezes é necessário que algumas variáveis e funções do módulo fiquem disponíveis externamente. Vamos ver como isso é feito. Suponha que temos o seguinte módulo:
;(function() {
let str = 'variável do módulo';
function func() {
alert('função do módulo');
}
})();
Vamos exportar nossa função func.
Para isso, vamos atribuí-la a uma propriedade do objeto
global window (no navegador):
;(function() {
let str = 'variável do módulo';
function func() {
alert('função do módulo');
}
window.func = func;
})();
Agora podemos chamar nossa função de fora do módulo:
;(function() {
let str = 'variável do módulo';
function func() {
alert('função do módulo');
}
window.func = func;
})();
window.func(); // exibirá 'função do módulo'
Nesse caso, não é necessário chamar a função
como uma propriedade do objeto window:
;(function() {
let str = 'variável do módulo';
function func() {
alert('função do módulo');
}
window.func = func;
})();
func(); // exibirá 'função do módulo'
Dado o seguinte módulo:
;(function() {
let str1 = 'variável do módulo';
let str2 = 'variável do módulo';
let str3 = 'variável do módulo';
function func1() {
alert('função do módulo');
}
function func2() {
alert('função do módulo');
}
function func3() {
alert('função do módulo');
}
})();
Exporte para fora uma das variáveis e duas funções quaisquer.