我有一个问题,用窗口对象实现一个类,我有一个命名空间调用UTIL,我有这个类:
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]();
,最后一行显示错误:“window [clStr]不是构造函数”
我不明白为什么在instanciate失败的时候,这个类ObservationVal被定义为这样的命名空间:
function ObservationVal(state, id, type, context, performer, addresee, query) {
//..
}
窗口的instanciate工作正常。 感谢。
答案 0 :(得分:0)
这是因为foo["bar.baz"]
不等于foo.bar.baz
。您可能需要window.UTIL.Classes[name]
这样的内容。