ES6从另一个方法调用一个方法

ani*_*vas 6 javascript ecmascript-6

我是ES6语法的新手,我原来的代码有更多的实现,但我已经简化了.我收到一个错误,说无法读取未定义的属性'Method2'.我在这做错了什么?我是否必须进行任何绑定调用.

class Class1 {
  constructor() {      
     eventbus.subscribe(this.Method1);  
    }

  Method1() {
   this.Method2(); 
  }

  Method2(){    
  }  
}
Run Code Online (Sandbox Code Playgroud)

ano*_*lsi 2

你需要做eventbus.subscribe(this.Method1.bind(this));

由于您将方法关联到在其他位置运行,因此您将确定它将在哪个范围内运行。强制绑定到 this 将确保Class1将使用该实例。

编辑:由于 ES6 允许箭头函数,你也可以这样做eventbus.subscribe(() => this.Method1());,因为它是由 @torazaburo 引用的

  • 就我个人而言,我更喜欢“eventbus.subscribe(() => this.Method1())”,因为我们有了箭头函数。 (2认同)