我在使用 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')
。他们不是一回事吗??