ตามที่ Triptych ชี้ให้เห็นคุณสามารถเรียกใช้ฟังก์ชันขอบเขตส่วนกลางใด ๆ โดยค้นหาในเนื้อหาของวัตถุโฮสต์
วิธีการที่สะอาดกว่าซึ่งก่อให้เกิดมลพิษต่อเนมสเปซทั่วโลกน้อยกว่ามากคือการใส่ฟังก์ชันลงในอาร์เรย์โดยตรงดังนี้:
var dyn_functions = [];
dyn_functions['populate_Colours'] = function (arg1, arg2) {
// function body
};
dyn_functions['populate_Shapes'] = function (arg1, arg2) {
// function body
};
// calling one of the functions
var result = dyn_functions['populate_Shapes'](1, 2);
// this works as well due to the similarity between arrays and objects
var result2 = dyn_functions.populate_Shapes(1, 2);
อาร์เรย์นี้อาจเป็นคุณสมบัติของออบเจ็กต์บางอย่างนอกเหนือจากอ็อบเจ็กต์โฮสต์ส่วนกลางเช่นกันซึ่งหมายความว่าคุณสามารถสร้างเนมสเปซของคุณเองได้อย่างมีประสิทธิภาพเหมือนกับไลบรารี JS จำนวนมากเช่น jQuery สิ่งนี้มีประโยชน์ในการลดความขัดแย้งหาก / เมื่อคุณรวมไลบรารียูทิลิตี้แยกกันหลายไลบรารีไว้ในหน้าเดียวกันและ (ส่วนอื่น ๆ ของการอนุญาตการออกแบบของคุณ) ช่วยให้สามารถใช้โค้ดซ้ำในหน้าอื่น ๆ ได้ง่ายขึ้น
คุณยังสามารถใช้วัตถุเช่นนี้ซึ่งคุณอาจพบว่าสะอาดกว่า:
var dyn_functions = {};
dyn_functions.populate_Colours = function (arg1, arg2) {
// function body
};
dyn_functions['populate_Shapes'] = function (arg1, arg2) {
// function body
};
// calling one of the functions
var result = dyn_functions.populate_Shapes(1, 2);
// this works as well due to the similarity between arrays and objects
var result2 = dyn_functions['populate_Shapes'](1, 2);
โปรดทราบว่าด้วยอาร์เรย์หรือออบเจ็กต์คุณสามารถใช้วิธีการตั้งค่าหรือเข้าถึงฟังก์ชั่นใดก็ได้และแน่นอนว่าสามารถจัดเก็บอ็อบเจ็กต์อื่น ๆ ไว้ในนั้นด้วย คุณสามารถลดไวยากรณ์ของวิธีใดวิธีหนึ่งสำหรับเนื้อหาที่ไม่ใช่ไดนามิกนั้นได้โดยใช้สัญกรณ์ตัวอักษร JS ดังนี้:
var dyn_functions = {
populate_Colours:function (arg1, arg2) {
// function body
};
, populate_Shapes:function (arg1, arg2) {
// function body
};
};
แก้ไข: แน่นอนว่าสำหรับบล็อกการทำงานที่ใหญ่ขึ้นคุณสามารถขยายข้างต้นเป็น "รูปแบบโมดูล" ทั่วไปซึ่งเป็นวิธีที่นิยมในการห่อหุ้มคุณลักษณะของโค้ดในลักษณะที่เป็นระเบียบ