การส่งออกอ็อบเจกต์ในโมดูลผ่านคลอเชอร์ใน JavaScript
สมมติว่าเรามีโมดูลต่อไปนี้:
;(function() {
function func1() {
alert('ฟังก์ชันของโมดูล');
}
function func2() {
alert('ฟังก์ชันของโมดูล');
}
function func3() {
alert('ฟังก์ชันของโมดูล');
}
})();
สมมติว่าเราต้องการส่งออกฟังก์ชันทั้งสามออกไปภายนอก ในกรณีนี้ เพื่อไม่ให้สร้างชื่อฟังก์ชันที่ไม่จำเป็นภายนอกโมดูลมากเกินไป ควรบันทึกฟังก์ชันทั้งหมดลงในอ็อบเจกต์เดียวและดำเนินการส่งออกอ็อบเจกต์นี้:
;(function() {
function func1() {
alert('ฟังก์ชันของโมดูล');
}
function func2() {
alert('ฟังก์ชันของโมดูล');
}
function func3() {
alert('ฟังก์ชันของโมดูล');
}
window.module = {func1: func1, func2: func2, func3: func3};
})();
เนื่องจากชื่อคีย์และชื่อตัวแปรตรงกัน อ็อบเจกต์ที่มีฟังก์ชันสามารถทำให้ง่ายขึ้นได้:
;(function() {
function func1() {
alert('ฟังก์ชันของโมดูล');
}
function func2() {
alert('ฟังก์ชันของโมดูล');
}
function func3() {
alert('ฟังก์ชันของโมดูล');
}
window.module = {func1, func2, func3};
})();
สามารถใช้วิธีอื่นได้เช่นกัน เราจะบันทึกฟังก์ชันลงในอ็อบเจกต์ทันทีเมื่ออธิบายฟังก์ชัน ดังนี้:
;(function() {
let module = {};
module.func1 = function() {
alert('ฟังก์ชันของโมดูล');
}
module.func2 = function() {
alert('ฟังก์ชันของโมดูล');
}
module.func3 = function() {
alert('ฟังก์ชันของโมดูล');
}
window.module = module;
})();
กำหนดโมดูลต่อไปนี้:
;(function() {
let str1 = 'ตัวแปรของโมดูล';
let str2 = 'ตัวแปรของโมดูล';
let str3 = 'ตัวแปรของโมดูล';
function func1() {
alert('ฟังก์ชันของโมดูล');
}
function func2() {
alert('ฟังก์ชันของโมดูล');
}
function func3() {
alert('ฟังก์ชันของโมดูล');
}
function func4() {
alert('ฟังก์ชันของโมดูล');
}
function func5() {
alert('ฟังก์ชันของโมดูล');
}
})();
ส่งออกอ็อบเจกต์ที่มีฟังก์ชันห้าฟังก์ชันแรกและตัวแปรสองตัวแรกออกไปภายนอก