私はクライアントで宣言された名前空間とクラスを持っています。実際、私はいくつかの名前空間で宣言された一連のクラスを持っています。私はちょうど私がページのロード時に "ドット付き" namespace.class名を含む文字列をサーバーから取得するときに、そのうちの1つのインスタンスを取得する必要があります。JavaScript:文字列名を持つオブジェクトを作成する方法
現在、私はそれを行うためにeval
を使用しますが、これはメモリリークが発生するので、私は唯一のその名前を知ることで宣言したオブジェクトをインスタンス化する別の方法を見つけようとしています。 var obj = "myNamespace.myObjectName"();
のようなものは明らかに機能しません。
window["myNamespace"] = {};
myNamespace.myObjectName = function() { /* blah */ };
var name = "myNamespace.myObjectName";
var obj = eval("new " + name + "()");
しかし、私はしたくないいくつかの理由のために/を使用することはできませんeval
:私は、文字列変数としてオブジェクト名を持っている場合
は、私は、そのオブジェクトのインスタンスを作成するためにeval()
機能を使用することができます。 eval
を使用せずに名前でオブジェクトを作成するにはどうすればよいですか?
私の状況では、その質問の回答は役に立ちません。重複しているとマークする前に注意深くお読みください。 – Alex
あなたは 'name'変数の内容を制御しないので、文字列にドットを組み込む必要がありますか? –
"myNamespace.myObjectName"()を呼び出すことはできません。質問をお読みください。 – Alex