Експорт на обект в модули чрез затваряния в JavaScript
Да предположим, че имаме следния модул:
;(function() {
function func1() {
alert('module function');
}
function func2() {
alert('module function');
}
function func3() {
alert('module function');
}
})();
Да предположим, че искаме да експортираме навън и трите функции. В този случай, за да не създаваме извън модула излишни имена на функции, е по-добре да запишем всички функции в един обект и да извършим експорт на този обект:
;(function() {
function func1() {
alert('module function');
}
function func2() {
alert('module function');
}
function func3() {
alert('module function');
}
window.module = {func1: func1, func2: func2, func3: func3};
})();
Тъй като имената на ключовете и променливите съвпадат, обектът с функции може да се опрости:
;(function() {
function func1() {
alert('module function');
}
function func2() {
alert('module function');
}
function func3() {
alert('module function');
}
window.module = {func1, func2, func3};
})();
Може да се поеме и по друг начин. Ще записваме функциите в обекта веднага при дефинирането им, ето така:
;(function() {
let module = {};
module.func1 = function() {
alert('module function');
}
module.func2 = function() {
alert('module function');
}
module.func3 = function() {
alert('module function');
}
window.module = module;
})();
Даден е следният модул:
;(function() {
let str1 = 'module variable';
let str2 = 'module variable';
let str3 = 'module variable';
function func1() {
alert('module function');
}
function func2() {
alert('module function');
}
function func3() {
alert('module function');
}
function func4() {
alert('module function');
}
function func5() {
alert('module function');
}
})();
Експортирайте навън обект с първите пет функции и първите две променливи.