JavaScript да модуллардаги ўзгарувчи ва функцияларни экспорт қилиш: closure орқали
Баъзан модулнинг айрим ўзгарувчи ва функцияларини ташқарида қўллаш талаб этилиши мумкин. Буни қандай қилишни кўриб чиқайлик. Бизда куйидаги модул бор деб фараз қилайлик:
;(function() {
let str = 'модулнинг ўзгарувчиси';
function func() {
alert('модулнинг функцияси');
}
})();
Келинг, бизнинг func функциямизни экспорт қилайлик.
Бунинг учун уни браузердаги ўрнатилган window
объектининг хусусиятига ёзамиз:
;(function() {
let str = 'модулнинг ўзгарувчиси';
function func() {
alert('модулнинг функцияси');
}
window.func = func;
})();
Энди биз модул ташқарида функциямизни чақира оламиз:
;(function() {
let str = 'модулнинг ўзгарувчиси';
function func() {
alert('модулнинг функцияси');
}
window.func = func;
})();
window.func(); // 'модулнинг функцияси' чиқади
Бунда функцияни window объектининг хусусияти
сифатида чақириш шарт эмас:
;(function() {
let str = 'модулнинг ўзгарувчиси';
function func() {
alert('модулнинг функцияси');
}
window.func = func;
})();
func(); // 'модулнинг функцияси' чиқади
Куйидаги модул берилган:
;(function() {
let str1 = 'модулнинг ўзгарувчиси';
let str2 = 'модулнинг ўзгарувчиси';
let str3 = 'модулнинг ўзгарувчиси';
function func1() {
alert('модулнинг функцияси');
}
function func2() {
alert('модулнинг функцияси');
}
function func3() {
alert('модулнинг функцияси');
}
})();
Битта ўзгарувчи ва иккита ихтиёрий функцияни ташқарига экспорт қилинг.