我在使用 JavaScript 时遇到了一个非常令人费解的问题。看看下面的代码..
az={
classes:{
test:function(){
this.hello=function(name){
alert('hello '+name);
}
}
},
getClass:function(name){
return az.classes[name];
}
};
var a=new az.classes['test']();
a.hello('foo');
var b= new az.getClass('test')();
b.hello();// fails !!!
在代码中,如果您注意到我们在对象中定义了一个类az.classes。当尝试通过 new 创建该类的实例时az.classes['test](),它可以正常工作并a.hello()执行。但是当我调用该方法时az.getClass('test'),该方法又返回相同的构造函数,但是当我var b=new az.getClass('test');在这里说它b时它失败了undefined!失败了b.hello()!!我不明白这种行为!az.classes['test']()new和 new有什么区别az.getClass('test')。他们不是一回事吗??