2012-03-13 3 views
1

Possible Duplicate:
Create instance of “Class” Using “Reflection” in JavaScript代替は

のJavaは、実行時にクラスをロードするためにClass.forName("XYZClass")を持っています。 JavaScriptにClass.forName("XYZClass")の代替語句はありますか?

+2

何をしようとしますか? –

+0

実際には、実行時にオブジェクトを作成しようとしています。私はクラスまたは関数名に関数に「MyClass」と答え、その関数はその名前に従ってオブジェクトを作成します。 – gmuhammad

+3

実行時にJavascriptクラスをロードしようとしているようです。しかし、Javasriptにはクラスがありません。 –

答えて

3

個人的には、慣用的な構文を使用するのではなく、Javaコードを文字通りJavaScriptに変換しようとしていると思います(でも、Class.forName()はJavaでも慣用ではありません)。ただし、試してみましょう:

function XYZClass() { 
    this.answer = 42; 
} 

これはあなたのクラスです。通常、あなたが使用して作成します。

この作品JavaScriptで " 反射" と
var xyz = new XYZClass(); 

var className = "XYZClass"; 
var xyz = new window[className](); 
+0

あなたのコードが正しく理解されず、エラー "TypeError:window [className]がコンストラクタではありません"が表示されます。 – gmuhammad

+1

@gmuhammad: 'new window.XYZClass()'は動作しますか? http://stackoverflow.com/questions/9462881もご覧ください。同様のソリューションがあります。 –

+0

私は今あなたの意見を持っています、最初に試してくださいXYZClassはグローバルとして宣言されていませんでした。今、私はそれをグローバルとして宣言し、現在は機能しています。そして今、私はそれが働いている、それはトップレベルのグローバル変数であるウィンドウを使用してクラス/関数にアクセスしている理由だ。 〜 :) – gmuhammad