Как указывает Триптих, вы можете вызвать любую функцию глобальной области видимости, найдя ее в содержимом хост-объекта.
Более чистый метод, который намного меньше загрязняет глобальное пространство имен, состоит в том, чтобы явно поместить функции в массив прямо следующим образом:
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
};
};
Изменить: конечно, для более крупных функциональных блоков вы можете расширить приведенное выше до очень распространенного «модульного шаблона», который является популярным способом инкапсуляции функций кода в организованном порядке.