Como Triptych aponta, você pode chamar qualquer função de escopo global localizando-a no conteúdo do objeto host.
Um método mais limpo, que polui o namespace global muito menos, é colocar explicitamente as funções em uma matriz diretamente, assim:
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);
Essa matriz também pode ser uma propriedade de algum objeto diferente do objeto host global, o que significa que você pode criar seu próprio namespace com eficácia, como fazem muitas bibliotecas JS, como jQuery. Isso é útil para reduzir conflitos se / quando você incluir várias bibliotecas de utilitários separadas na mesma página e (se outras partes do seu design permitirem) pode tornar mais fácil reutilizar o código em outras páginas.
Você também pode usar um objeto como este, que pode ser mais limpo:
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);
Observe que, com um array ou um objeto, você pode usar qualquer um dos métodos de configuração ou acesso às funções e, é claro, também pode armazenar outros objetos. Você pode reduzir ainda mais a sintaxe de qualquer um dos métodos para conteúdo que não seja tão dinâmico usando a notação literal JS como:
var dyn_functions = {
populate_Colours:function (arg1, arg2) {
// function body
};
, populate_Shapes:function (arg1, arg2) {
// function body
};
};
Editar: é claro que para blocos maiores de funcionalidade, você pode expandir o acima para o "padrão de módulo" muito comum, que é uma maneira popular de encapsular recursos de código de maneira organizada.