2012-03-13 59 views
1

Possible Duplicate:
Create instance of 「Class」 Using 「Reflection」 in JavaScript備用的Class.forName( 「XYZClass」)的

Java有Class.forName("XYZClass")在運行時加載的類。在JavaScript中是否有替代Class.forName("XYZClass")

+2

你到底想幹什麼? – 2012-03-13 08:23:04

+0

其實我試圖在運行時創建對象。我已經傳遞了一個類或函數名稱'MyClass'給一個函數,並且該函數將根據該名稱創建對象。 – gmuhammad 2012-03-13 08:25:00

+3

看起來他正試圖在運行時加載Javascript類。但Javasript沒有類... – 2012-03-13 08:25:01

回答

3

就我個人而言,我認爲你正在嘗試將Java代碼字面翻譯爲JavaScript,而不是使用慣用的構造(嗯,Class.forName()在Java中也不是慣用的)。不過,讓我們試試看:

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

這是你的班級。通常你會使用創建它:

var xyz = new XYZClass(); 

隨着 「反射」 在JavaScript這樣工作的:

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

我沒有正確理解您的代碼,並且出現錯誤「TypeError:window [className]不是構造函數」。 – gmuhammad 2012-03-13 08:35:49

+1

@gmuhammad:'new window.XYZClass()'工作嗎?也看看:http://stackoverflow.com/questions/9462881,它有一個類似的解決方案。 – 2012-03-13 08:39:04

+0

我現在明白了你的觀點,首先嚐試XYZClass沒有被聲明爲全局。現在我宣佈它是全球性的,現在它正在工作。現在我明白了爲什麼它正在工作,它使用頂級全局變量窗口訪問類/函數。感謝名單。 :) – gmuhammad 2012-03-13 08:48:44

相關問題