Muuttujien ja funktioiden vieminen moduuleissa sulkeumien kautta JavaScriptissä
Joskus on tarpeen tehdä niin, että jotkut moduulin muuttujat ja funktiot ovat saatavilla ulkopuolelta. Katsotaan kuinka tämä tehdään. Olkoon meillä seuraava moduuli:
;(function() {
let str = 'moduulin muuttuja';
function func() {
alert('moduulin funktio');
}
})();
Viedään funktiomme func.
Tätä varten kirjoitamme sen selainobjektin
window ominaisuuteen:
;(function() {
let str = 'moduulin muuttuja';
function func() {
alert('moduulin funktio');
}
window.func = func;
})();
Nyt voimme kutsua funktiotamme moduulin ulkopuolelta:
;(function() {
let str = 'moduulin muuttuja';
function func() {
alert('moduulin funktio');
}
window.func = func;
})();
window.func(); // tulostaa 'moduulin funktio'
Samaan aikaan funktiota ei ole pakko kutsua
window-objektin ominaisuutena:
;(function() {
let str = 'moduulin muuttuja';
function func() {
alert('moduulin funktio');
}
window.func = func;
})();
func(); // tulostaa 'moduulin funktio'
Annettu on seuraava moduuli:
;(function() {
let str1 = 'moduulin muuttuja';
let str2 = 'moduulin muuttuja';
let str3 = 'moduulin muuttuja';
function func1() {
alert('moduulin funktio');
}
function func2() {
alert('moduulin funktio');
}
function func3() {
alert('moduulin funktio');
}
})();
Vie yksi muuttujista ja kaksi mitä tahansa funktiota ulos.