Come sottolinea Triptych, è possibile chiamare qualsiasi funzione di ambito globale trovandola nel contenuto dell'oggetto host.
Un metodo più pulito, che inquina molto meno lo spazio dei nomi globale, consiste nell'inserire esplicitamente le funzioni in un array direttamente in questo modo:
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);
Questo array potrebbe anche essere una proprietà di qualche oggetto diverso dall'oggetto host globale, il che significa che puoi creare efficacemente il tuo spazio dei nomi come fanno molte librerie JS come jQuery. Ciò è utile per ridurre i conflitti se / quando si includono più librerie di utilità separate nella stessa pagina e (altre parti del progetto lo consentono) può semplificare il riutilizzo del codice in altre pagine.
Potresti anche usare un oggetto come questo, che potresti trovare più pulito:
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);
Si noti che con un array o un oggetto, è possibile utilizzare entrambi i metodi di impostazione o di accesso alle funzioni e, ovviamente, memorizzare anche altri oggetti. Puoi ridurre ulteriormente la sintassi di entrambi i metodi per i contenuti che non sono così dinamici utilizzando la notazione letterale JS in questo modo:
var dyn_functions = {
populate_Colours:function (arg1, arg2) {
// function body
};
, populate_Shapes:function (arg1, arg2) {
// function body
};
};
Modifica: ovviamente per blocchi di funzionalità più grandi è possibile espandere quanto sopra al "modello di modulo" molto comune, che è un modo popolare per incapsulare le funzionalità del codice in modo organizzato.