2016-05-29 14 views
4

Node.Jsアプリケーション(サーバー側)では、オブジェクトインスタンス(つまり、クラスはnew MyClass())を作成する必要がありますが、MyClassはstringです。NodeJS - Javascriptは文字列からオブジェクトインスタンスを作成します

文字列からオブジェクトインスタンスを作成することは可能ですか?私はブラウザ側でwindowを使用することができますが、ここで私はサーバー側です...

実行時にクラスの名前になるので、これが必要になります。このオブジェクトを "コード"でインスタンス化します。

また、私はこのようにして作成する必要があるいくつかのクラスを持つことができます。要するに、この種のクラスを明示的に設定する設定ファイルがあり、この文字列を実際のJavaScriptオブジェクトで変換する必要があります。

+0

を意味するか、私は工場出荷時のパターンは、あなたが求めているものだと思います。 –

+1

[文字列としての名前を持つときにJavaScript関数を実行する方法](http://stackoverflow.com/questions/359788/how-to-execute-a-javascript-function-when-i-have -its-as-a-string) – nwk

答えて

7

nodejsの場合、windowglobalで「置き換えられました」。したがって、クラスがグローバルコンテキストで使用できる場合は、global["ClassName"]を使用してフェッチできます。

ただし、可能であれば、コンストラクタの辞書の使用を検討することもできます。それは一般によりクリーンです。ここに例があります。 essentialjsdesignpatterns /書籍/#のfactorypatternjavascript:

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

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

これはまさに私が心に留めていたものです!私の考えは、あなたが私に工場を見せたように、オブジェクト内のすべてのクラスを管理するハンドラを作成することでした。しかし、 私はそれを新しく呼び出すことはできないと思った。あなたは私の命を救った:D – Mistre83

1

あなたは

var myClass = Object.assign(new MyClass(), JSON.parse(classString)); 
関連する問題