Wie Triptychon hervorhebt, können Sie jede globale Bereichsfunktion aufrufen, indem Sie sie im Inhalt des Hostobjekts finden.
Eine sauberere Methode, die den globalen Namespace viel weniger verschmutzt, besteht darin, die Funktionen explizit wie folgt explizit in ein Array einzufügen:
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);
Dieses Array kann auch eine Eigenschaft eines anderen Objekts als des globalen Hostobjekts sein, was bedeutet, dass Sie effektiv Ihren eigenen Namespace erstellen können, wie dies bei vielen JS-Bibliotheken wie jQuery der Fall ist. Dies ist nützlich, um Konflikte zu reduzieren, wenn Sie mehrere separate Dienstprogrammbibliotheken auf derselben Seite einfügen und (sofern andere Teile Ihres Entwurfs dies zulassen) die Wiederverwendung des Codes auf anderen Seiten erleichtern.
Sie können auch ein Objekt wie dieses verwenden, das Sie möglicherweise sauberer finden:
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);
Beachten Sie, dass Sie mit einem Array oder einem Objekt entweder die Methode zum Festlegen oder Zugreifen auf die Funktionen verwenden und natürlich auch andere Objekte darin speichern können. Sie können die Syntax beider Methoden für nicht so dynamische Inhalte weiter reduzieren, indem Sie die JS-Literalnotation wie folgt verwenden:
var dyn_functions = {
populate_Colours:function (arg1, arg2) {
// function body
};
, populate_Shapes:function (arg1, arg2) {
// function body
};
};
Bearbeiten: Natürlich können Sie für größere Funktionsblöcke das Obige auf das sehr verbreitete "Modulmuster" erweitern, das eine beliebte Methode ist, um Code-Features auf organisierte Weise zu kapseln.