Export van object in modules via closures in JavaScript
Stel we hebben de volgende module:
;(function() {
function func1() {
alert('module functie');
}
function func2() {
alert('module functie');
}
function func3() {
alert('module functie');
}
})();
Stel we willen alle drie de functies naar buiten exporteren. In dat geval, om buiten de module niet te veel functienamen te creëren, is het beter om alle functies in één object te plaatsen en dat object te exporteren:
;(function() {
function func1() {
alert('module functie');
}
function func2() {
alert('module functie');
}
function func3() {
alert('module functie');
}
window.module = {func1: func1, func2: func2, func3: func3};
})();
Omdat de sleutelnamen en variabelenamen overeenkomen, kan het object met functies worden vereenvoudigd:
;(function() {
function func1() {
alert('module functie');
}
function func2() {
alert('module functie');
}
function func3() {
alert('module functie');
}
window.module = {func1, func2, func3};
})();
We kunnen ook een andere weg inslaan. We zullen de functies meteen bij de functiedefinitie in het object plaatsen, zoals hier:
;(function() {
let module = {};
module.func1 = function() {
alert('module functie');
}
module.func2 = function() {
alert('module functie');
}
module.func3 = function() {
alert('module functie');
}
window.module = module;
})();
Gegeven de volgende module:
;(function() {
let str1 = 'module variabele';
let str2 = 'module variabele';
let str3 = 'module variabele';
function func1() {
alert('module functie');
}
function func2() {
alert('module functie');
}
function func3() {
alert('module functie');
}
function func4() {
alert('module functie');
}
function func5() {
alert('module functie');
}
})();
Exporteer naar buiten een object met de eerste vijf functies en de eerste twee variabelen.