我将javascript类指定为:
var this_plugin_url = ''
...
function googleMapControls( Params ) {
this_plugin_url = Params.plugin_url;
...
}
googleMapControls.prototype.showFiltersPopup= function() {
...
}
我可以从其他js脚本调用函数,如: ...
var l_objgoogleMapControls = new googleMapControls( { } );
l_objgoogleMapControls.showFiltersPopup(); // that works ok,
但是当我从其他googleMapControls函数调用showFiltersPopup时出现错误,如:
googleMapControls.prototype.showDirectionsPopup= function() {
...
this.showFiltersPopup("block") // error Uncaught TypeError: this.showFiltersPopup is not a function(anonymous function) @ google_map_controls.js?ver=4.2.4:130
当我打电话给时出现类似的错误
googleMapControls.showFiltersPopup()
哪种方法正确?
谢谢!
答案 0 :(得分:0)
错误显示anonymous function
,表示最有可能在异步操作的回调中执行该代码,因此this
上下文丢失。
作为常见的解决方法,您应该使用闭包。声明对this
的引用并在回调中使用它
googleMapControls.prototype.showDirectionsPopup= function() {
...
var self = this;
asyncOperation(function(){
...
self.showFiltersPopup("block")