Wie erstelle ich ein neues Objekt in Javascript basierend auf einem Typstring?

8

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".

    
Dribbel 05.12.2010, 19:25
quelle

3 Antworten

17
%Vor%

Nimmt an, dass PointerTool -Konstruktor im globalen window -Namespace definiert ist. Ersetzen Sie das durch den von Ihnen verwendeten Namespace.

    
user113716 05.12.2010, 19:30
quelle
8

Sie sollten überlegen, Ihren Ansatz zu überdenken. Es wäre besser, etwas wie ein Tools -Objekt zu haben, das die Werkzeuge als Eigenschaften haben würde, wie

%Vor%

Auf diese Weise können Sie auf die Werkzeuge sowohl als new Tools.SelectTool als auch new Tools[var_with_tool_name] zugreifen.

    
Gabi Purcaru 05.12.2010 19:31
quelle
3
___ answer4360707 ___

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.

    
___ answer4360706 ___
%Vor%

Nimmt an, dass %code% -Konstruktor im globalen %code% -Namespace definiert ist. Ersetzen Sie das durch den von Ihnen verwendeten Namespace.

    
___ antwort4360726 ___

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".

    
___
Lee 05.12.2010 19:36
quelle

Tags und Links