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