Как указывает Триптих, вы можете вызвать любую глобальную функцию области видимости, найдя ее в содержимом объекта хоста.
Более чистый метод, который значительно загрязняет глобальное пространство имен, заключается в том, чтобы явно включить функции в массив прямо так:
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 do , Это полезно для уменьшения конфликтов, если при включении нескольких отдельных библиотек утилиты на одной странице и (в других частях вашего разрешения) можно упростить повторное использование кода на других страницах.
Вы могли бы также используйте такой объект, который вы можете найти более чистым:
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);
Обратите внимание, что с помощью массива или объекта вы можете использовать любой способ установки или доступа к функциям и, конечно, хранить другие объекты там тоже. Вы также можете уменьшить синтаксис любого из методов для contant, который не является таким синтаксическим с использованием буквенной нотации JS, например:
var dyn_functions = {
populate_Colours:function (arg1, arg2) {
// function body
};
, populate_Shapes:function (arg1, arg2) {
// function body
};
};
Редактирование: конечно, для более крупных блоков функциональности вы можете расширить приведенные выше очень распространенный «шаблон модуля», который является популярным способом инкапсуляции функций кода организованным образом.