2011-11-11 94 views
-1

窗口對象,我有與窗口對象實例化一個類的問題,我有一個命名空間中調用UTIL,我有這個類:實例化與JAVASCRIPT

var UTIL = { Classes : {}}; 

UTIL.Classes.ObservationVal = function(state, id, type, context, performer, addresee, query) { 
    this.query = query; 
    SPEECH.Classes.ActionVal.call(this,state, id, type, context, performer, addresee); 
} 

UTIL.Classes.ObservationVal.prototype = new SPEECH.Classes.ActionVal(); 
UTIL.Classes.ObservationVal.prototype.constructor = SPEECH.Classes.ObservationVal; 

後,我有這樣的代碼:

var name = "ObservationVal"; 
var clStr = "UTIL.Classes." + name; 
var obj = new window[clStr](); 

和最後一行顯示了錯誤:「窗口[clStr]是不是構造」

我不明白爲什麼會失敗的實例化,上課的時候ObservationVal定義了命名空間的這樣:

function ObservationVal(state, id, type, context, performer, addresee, query) { 
//.. 
} 

與窗口Instanciate工作正常。 謝謝。

回答

1

這是因爲foo["bar.baz"]不等於foo.bar.baz。你可能在這裏需要像window.UTIL.Classes[name]這樣的東西。