Экспарт аб'екта ў модулях праз замыканні ў JavaScript
Няхай у нас ёсць наступны модуль:
;(function() {
function func1() {
alert('module funcion');
}
function func2() {
alert('module funcion');
}
function func3() {
alert('module funcion');
}
})();
Няхай мы хочам экспартаваць вон усе тры функцыі. У гэтым выпадку, каб не плодзіць вон модуля лішніх імёнаў функцый, лепш запісаць усе функцыі ў адзін аб'ект і выканаць экспарт гэтага аб'екта:
;(function() {
function func1() {
alert('module funcion');
}
function func2() {
alert('module funcion');
}
function func3() {
alert('module funcion');
}
window.module = {func1: func1, func2: func2, func3: func3};
})();
Так як імёны ключоў і зменных супадаюць, то аб'ект з функцыямі можна спрасьціць:
;(function() {
function func1() {
alert('module funcion');
}
function func2() {
alert('module funcion');
}
function func3() {
alert('module funcion');
}
window.module = {func1, func2, func3};
})();
Можна пайсці і іншым шляхам. Будзем запісваць функцыі ў аб'ект адразу пры апісанні функцыі, вось так:
;(function() {
let module = {};
module.func1 = function() {
alert('module funcion');
}
module.func2 = function() {
alert('module funcion');
}
module.func3 = function() {
alert('module funcion');
}
window.module = module;
})();
Дадзены наступны модуль:
;(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');
}
})();
Экспартуйце вон аб'ект з першымі пяццю функцыямі і першымі двума зменнымі.