2016-05-29 13 views
4

In meiner Node.Js-Anwendung (Server-Seite) muss ich eine Objektinstanz erstellen (das ist eine Klasse, also mit new MyClass()) aber MyClass ist ein string.NodeJS - Javascript Erstellen Objektinstanz von String

Es ist möglich, Objektinstanzen aus einem String zu erstellen? Ich habe gesehen, dass in Browser-Seite kann ich window verwenden, aber hier bin ich auf der Serverseite ...

Ich werde das brauchen, weil ich jetzt den Namen der Klasse zur Laufzeit, so kann ich nicht instanziieren Sie dieses Objekt in "Code".

Darüber hinaus kann ich mehrere Klassen haben, die auf diese Weise erstellt werden müssen. Kurz gesagt, ich habe eine Konfigurationsdatei, die diese Art von Klasse explizit, und ich muss diese Zeichenfolge in einem echten JavaScript-Objekt konvertieren.

+0

Ich denke, bedeuten, dass die Fabrik Muster ist das, was Sie suchen für: essentialjsdesignpatterns/Buch/# factorypatternjavascript. –

+1

Mögliches Duplikat von [So führen Sie eine JavaScript-Funktion aus, wenn ich ihren Namen als Zeichenfolge habe] (http://stackoverflow.com/questions/359788/how-to-execute-a-jacascript-function-when-i-have -its-name-as-a-string) – nwk

Antwort

7

Mit nodejs wird window durch global "ersetzt". Wenn Ihre Klasse im globalen Kontext verfügbar ist, können Sie sie mit global["ClassName"] abrufen.

Wenn Sie jedoch können, können Sie auch die Verwendung eines Wörterbuchs von Konstruktoren in Erwägung ziehen. Es ist im Allgemeinen sauberer. Hier ist ein Beispiel.

var constructors = { 
    Class1: Class1, 
    Class2: Class2 
}; 

var obj1 = new constructors["Class1"](args); 
+0

Genau das habe ich mir gedacht! Meine Idee war, einen Handler zu erstellen, um alle Klassen in einem Objekt zu verwalten, so wie du mir die Fabrik gezeigt hast. Aber Ich dachte nicht, dass es möglich war, neu darauf hinzuweisen. Du hast mein Leben gerettet: D – Mistre83

1

Haben Sie

var myClass = Object.assign(new MyClass(), JSON.parse(classString));