在类中调用javascript函数

时间:2015-08-15 06:47:13

标签: javascript function

我将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()

哪种方法正确?

谢谢!

1 个答案:

答案 0 :(得分:0)

错误显示anonymous function,表示最有可能在异步操作的回调中执行该代码,因此this上下文丢失。

作为常见的解决方法,您应该使用闭包。声明对this的引用并在回调中使用它

googleMapControls.prototype.showDirectionsPopup= function() {
     ...
     var self = this;
     asyncOperation(function(){
        ...        
        self.showFiltersPopup("block")