Как указывает Триптих, вы можете вызвать любую глобальную функцию сферы, найдя ее в содержимом хост-объекта.
уборщик метод, который загрязняет глобальное пространство имен намного меньше, чтобы явно поместить функции в массив непосредственно следующим образом:
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);
Обратите внимание, что с массивом или объектом, вы можете использовать либо метод установки или доступа к функциям, а может Конечно, там хранятся и другие объекты. Вы можете дополнительно уменьшить синтаксис любого метода для Contant, который не то, что synamic с помощью JS буквального обозначения следующим образом:
var dyn_functions = {
populate_Colours:function (arg1, arg2) {
// function body
};
, populate_Shapes:function (arg1, arg2) {
// function body
};
};
Edit: конечно, для больших блоков функциональности можно расширить выше к очень распространенным «шаблон модуля», который является популярным способом инкапсуляции функций кода организованным образом.
Я d рекомендовать против этого в пользу наличия локальных ветвей в одном методе «заполнения». Это сделало бы его более поддающимся проверке и выглядело бы менее «взломанным» –
см. Мой ответ здесь. [позвонить по имени в javascript] (https://stackoverflow.com/a/46090820/7771019) –