Ein sehr verwirrendes Problem, das ich mit JavaScript habe. Blick auf den Code unten ..Puzzling Javascript Konstruktor Problem
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 !!!
im Code, wenn Sie bemerken wir eine Klasse innerhalb eines Objekts definiert az.classes
. Wenn Sie versuchen, eine Instanz dieser Klasse durch neue az.classes['test]()
zu erstellen, funktioniert es und a.hello()
führt gut aus. aber wenn ich die Methode az.getClass('test')
aufrufen, die wiederum den gleichen Konstruktor zurückgibt, aber es schlägt fehl, wenn ich sage var b=new az.getClass('test');
hier sagen b
ist undefined
!! und b.hello()
schlägt fehl !! Ich verstehe dieses Verhalten nicht! Was ist der Unterschied zwischen neuen az.classes['test']()
und neuen az.getClass('test')
. Sind sie nicht das Gleiche?
versuchen Sie 'var b = new (az.getClass ('test'))();' stattdessen. dann wird b wie ein – user2264587
@ gurvinder372 Sie müssen eine andere Frage zu mir lesen. Ich sehe 'getClass: function (name)' – Phil