Como señala Triptych, puede llamar a cualquier función de alcance global encontrándola en los contenidos del objeto de host.
Un método más limpio, lo que contamina el espacio de nombres global mucho menos, es poner de forma explícita las funciones en una matriz directamente así:
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);
Esta matriz también podría ser una propiedad de un objeto que no sea el mundial objeto host también significa que puede crear efectivamente su propio espacio de nombres como muchas bibliotecas JS como jQuery. Esto es útil para reducir conflictos si/cuando incluye múltiples bibliotecas de utilidades separadas en la misma página, y (otras partes de su permiso de diseño) pueden facilitar la reutilización del código en otras páginas.
También es posible usar un objeto como tal, la que es posible encontrar más limpio:
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);
Tenga en cuenta que, ya sea con una matriz o un objeto, puede utilizar cualquiera de los métodos de establecer o acceder a las funciones, y puede por supuesto, almacenar otros objetos allí también. Puede reducir aún más la sintaxis de cualquiera de los métodos para contanto que no es que Synamic mediante el uso de la notación literal JS así:
var dyn_functions = {
populate_Colours:function (arg1, arg2) {
// function body
};
, populate_Shapes:function (arg1, arg2) {
// function body
};
};
Editar: por supuesto para los bloques más grandes de la funcionalidad se puede ampliar lo anterior a la muy comunes "patrón de módulo", que es una forma popular de encapsular las características del código de una manera organizada.
I' Recomiendo contra esto a favor de tener sucursales locales en un solo método 'poblar'. Sería más comprobable y se vería menos "hacky" –
ver mi respuesta aquí. [llamada por nombre en javascript] (https://stackoverflow.com/a/46090820/7771019) –