我定义了一个这样的类:
var LoadingPolecy={
initialize:function(){
return function(){
this.initialize.apply(this,arguments);
}
}
}
var AjaxLoadingPolecy= LoadingPolecy.initialize();
AjaxLoadingPolecy.prototype={
initialize:function(name){
this.name=name;
},
AjaxStartPolecy : function(){
...
},
AjaxStopPolecy : function(){
...
},
SetName : function(name){
...
}
}
var TempLoadingPolecy=LoadingPolecy.initialize();
TempLoadingPolecy.prototype={
initialize:function(displayArea,source,data){
this.loadingMsgPolecy = new AjaxLoadingPolecy();
...
},
StartLoadingTempPolecy : function(callback){
this.loadingMsgPolecy.SetName('view');
this.loadingMsgPolecy.AjaxStartPolecy();
var a = $.ajax({
...
success:function(html){
callback(html);
}
});
},
EndLoadingTempPolecy : function(html){
//Cannot call method 'AjaxStopPolecy' of undefined error
this.loadingMsgPolecy.AjaxStopPolecy();
....
}
}
我似乎对象中的对象已被更改,如何调用/使用我在初始化中定义的变量?
答案 0 :(得分:1)
ajax成功回调(对于大多数其他回调都是一样的)并没有给你相同的this
。但是,您可以将this
的先前副本保存到另一个变量中并以这种方式访问它:
我不明白你要问的代码的哪一部分,但这是一个你可以适应的简单例子:
initialize:function(displayArea,source,data){
StartLoadingTempPolecy : function(callback) {
this.loadingMsgPolecy.SetName('view');
this.loadingMsgPolecy.AjaxStartPolecy();
// save copy of `this` for future use in the success handler
var self = this;
var a = $.ajax({
...
success:function(html) {
// you can use the variable `self` here to access the previous this ptr
callback(html);
}
});
},