2011-11-11 123 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]这样的东西。