其他函数中的Javascript调用类方法

时间:2018-10-05 02:18:24

标签: javascript

我试图在类函数内调用一个函数。 像下面的代码。我想在我的addMarks函数中调用init()。 但这引发了这个错误

  

$。get(...)。bind不是函数

class MapManager {
  init(){
    $('#search').click(function(event) {
      if(start && destination){
        $.get('routes/search', {data: 123}, function(data, textStatus, xhr) {
          this.addMarks(data.data);
        }).bind(this);
      }
    });
  }

  addMarks(locations){
    ...
  }
}

2 个答案:

答案 0 :(得分:0)

您将this绑定到$.get,而不是successFn

否则,您始终可以预先分配this并在successFn范围内访问它。

例如

class MapManager {
  init(){
    let self = this; // <-- assign it here

    $('#search').click(function(event) {
      if(start && destination){
        $.get('routes/search', {data: 123}, function(data, textStatus, xhr) {
          // Yes! I can access 'self' here because it is defined where I am defined.
          self.addMarks(data.data);
        });
      }
    });
  }

  addMarks(locations){
    console.log(":: addMarks");
  }
}

答案 1 :(得分:0)

由于您使用的是class,因此对于现代javascript,您可以完全忘记使用箭头功能符号进行绑定

class MapManager {
  init(){
    $('#search').click((event) => {
      if(start && destination){
        $.get('routes/search', {data: 123}, (data, textStatus, xhr) => {
          this.addMarks(data.data);
        });
      }
    });
  }

  addMarks(locations){
    ...
  }
}