ES6:如何从回调函数调用类函数

kom*_*bat 4 javascript this ecmascript-6 es6-class

我有一个类,在 init 方法中我设置了一个点击事件,在该事件中我想调用类上的一个方法,但我不知道如何去做,或者是否有可能。这是显示我正在尝试的结构的代码。在类 init() 函数中,ajax 返回后我正在设置一个单击事件,在该回调中我想调用类的 classFn() 函数。我试过绑定这个,我试过 self = this 和绑定那个,箭头函数(我没想到会起作用,但我想我会试一试)等等。

class MyClass {
  constructor() {
   this.a = '';
  }

  init() {
    ....
    $.getJSON(url, function(data) {
      $(mySelector).click(function() {
        classFn();
      });
    });
  }

  classFn() {
    ....
  }
}
Run Code Online (Sandbox Code Playgroud)

Aur*_*ílý 7

function改变 的含义this。解决问题的一种方法是使用bind. 但是,您必须使用它两次,因为您有两层function. 解决它的一个简单方法是使用箭头函数,它不会改变this

class MyClass {
  constructor() {
   this.a = '';
  }

  init() {
    ....
    $.getJSON(url, (data) => {
      $(mySelector).click(() => {
        this.classFn();
      });
    });
  }

  classFn() {
    ....
  }
}
Run Code Online (Sandbox Code Playgroud)