Sie sollten überlegen, Ihren Ansatz zu überdenken. Es wäre besser, etwas wie ein PointerTool
-Objekt zu haben, das die Werkzeuge als Eigenschaften haben würde, wie
%Vor%
Auf diese Weise können Sie auf die Werkzeuge sowohl als window
als auch %code% zugreifen.
%Vor%
Nimmt an, dass %code% -Konstruktor im globalen %code% -Namespace definiert ist. Ersetzen Sie das durch den von Ihnen verwendeten Namespace.
In Ihrem Beispiel deklarieren Sie %code% als eine Funktion im globalen Gültigkeitsbereich. Unter der Annahme, dass Ihr Javascript den Browser ausführt, ist der "globale Bereich" tatsächlich gleich dem %code% -Objekt. Das heißt, wenn Sie einen Konstruktor haben:
%Vor%
Das ist das gleiche:
%Vor%
Nun können Sie in Ihrer getTool-Funktion auf Ihre Konstruktorfunktionen wie folgt zugreifen:
%Vor%
Ein "zukunftssicherer" Weg wäre, ein eigenes Namespace-Objekt zu definieren, in dem Sie all Ihre verschiedenen Werkzeugkonstruktoren platzieren. So etwas ("Mein Projekt" wäre der kurze Name Ihres Projekts oder Systems):
%Vor%
Dann würde Ihre getTool-Funktion wie folgt aussehen:
%Vor%
Dieser Ansatz hält Ihre Sachen von allem isoliert, was sonst im globalen / Fensterbereich definiert ist.
___ tag123javascript ___ JavaScript (nicht zu verwechseln mit Java) ist eine dynamische Sprache mit mehreren Paradigmen auf hoher Ebene, die sowohl für das clientseitige als auch für das serverseitige Scripting verwendet wird. Verwenden Sie dieses Tag für Fragen zu ECMAScript und seinen verschiedenen Dialekten / Implementierungen (außer ActionScript und Google-Apps-Script).
___ tag123dynamic ___ Dynamisch ist ein weit verbreiteter Begriff, der im Allgemeinen eine Entscheidung beschreibt, die das Programm zur Laufzeit statt zur Kompilierungszeit trifft.
___ qstnhdr ___ Wie erstelle ich ein neues Objekt in Javascript basierend auf einem Typstring?
___ qstntxt ___
Wie erstelle ich ein neues Objekt in Javascript basierend auf einem variablen String (enthält den Namen des Objekts)?
Jetzt habe ich: (mit mehr Werkzeugen kommt die Liste wird länger ...)
%Vor%
Und definierte meine Werkzeuge wie:
%Vor%
Ich würde gerne von der (wachsenden) switch-Anweisung profitieren, es scheint "falsch".