永发信息网

JS面向对象,回调函数中引用属性提示未定义。

答案:2  悬赏:10  手机版
解决时间 2021-03-14 16:58
  • 提问者网友:蓝莓格格巫
  • 2021-03-13 18:31
RT,我用Js写了一个类,类中的方法调用了一个回调函数,可在回调函数引用类的属性时提示未定义。

function PekingMap(){
this.map;
this.sRender;
this.search;
this.panel;
}
PekingMap.prototype.initialize=function(maparea){
var myLatLng = new sogou.maps.Point(12956000,4824875);
var myOptions = {
zoom: 10,
center: myLatLng,
panControlOptions: {center: myLatLng,level: 11}
};
this.map = new sogou.maps.Map(maparea, myOptions);//创建地图
}
var showSelect=function(marker,node){alert('in show select');
this.map.setCenter(marker.getPosition(),15);
}
PekingMap.prototype.searchPlace=function(){
alert('in search place');
alert('keyword:'+arguments[0]);
alert('panel:'+this.panel);
this.map.clearAll();
var keyword=arguments[0];
this.panel.innerHTML='';
this.sRender=new sogou.maps.SearchRenderer({'panel':this.panel});
var request={
'map':this.map,
'what':{
'keyword':keyword
},
'range':{
'city':'北京'
}
};
this.search=new sogou.maps.Search();//创建搜索实例
this.search.search(request,this.searchCallback);
}
PekingMap.prototype.searchCallback=function(resualt){alert(this.search);
this.search.setRenderer(this.sRender);
sogou.maps.event.addListener(this.sRender,'getMarker',function(marker,node){alert('in show select');
this.map.setCenter(marker.getPosition(),15);
});
}

如上代码,在调用searchCallback函数时提示search未定义。请高人解答,多谢。
最佳答案
  • 五星知识达人网友:第四晚心情
  • 2021-03-13 18:38
searchCallback=function(resualt);

this.search.search(request,this.searchCallback);

是不是没带参数?
全部回答
  • 1楼网友:上分大魔王
  • 2021-03-13 19:41
你的类最后要 return this的. 不返回值默认为undefined 你对这个类的实例操作当然未定义
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯