การส่งออกตัวแปรและฟังก์ชันในโมดูลผ่านการปิด (Closures) ใน JavaScript
บางครั้งจำเป็นต้องทำให้ตัวแปรและฟังก์ชันบางอย่างของโมดูลสามารถเข้าถึงได้จากภายนอก มาดูวิธีการทำกัน เริ่มจากสมมติว่าเรามีโมดูลต่อไปนี้:
;(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('ฟังก์ชันของโมดูล');
}
})();
ให้ส่งออกตัวแปรหนึ่งตัวและฟังก์ชันใดก็ได้สองฟังก์ชันไปยังภายนอก