Օբյեկտի էքսպորտ մոդուլներում փակումների միջոցով 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');
}
})();
Էքսպորտեք դուրս առաջին հինգ ֆունկցիաներով և առաջին երկու փոփոխականներով օբյեկտը: