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

ES6 call one method from another

本文关键字:方法 一个 调用 另一个 ES6      更新时间:2023-09-26

我是 ES6 语法的新手,我的原始代码有更多的实现,但我简化了。我收到一个错误,说无法读取未定义的属性"方法2"。我在这里做错了什么?我是否必须执行任何绑定调用。

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

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

由于您正在关联该方法以在其他地方运行,因此您将确定它将在哪个作用域下运行。强制绑定到此将确保这是将使用的Class1实例。

编辑:由于ES6允许箭头功能,你也可以做eventbus.subscribe(() => this.Method1());,因为它是由@torazaburo

引用的

无法读取未定义的属性"方法2"

很可能您没有创建同一类的任何对象,或者可能缺少创建新对象的 new 关键字。

var cls = Class1(); // will throw error.
cls.Method1(); 

我的意思是,如果你这样做:

var cls = new Class1();
cls.Method1(); // will get executed.

ES6小提琴演示。