首页 > 解决方案 > 如何访问匿名函数中的类方法

问题描述

我的 JS 类和 Promise 的回调中有一个方法,我希望它调用另一个类方法。

class MyClass {
   myClassMethod(arg1) {
         // this method did get called
   }
   
   aSecondClassMethod() {
          //...
   }

   methodWithPromise() {
       var myClassMethod = this.myClassMethod;
       let aPromise = methodReturnPromise(); 
       aPromise.then(function (value) {
           myClassMethod(value);
   }
 }

所以我创建了一个 var 调用myClassMethod并将其设置为this.myClassMethod. 当我调试代码时,myClassMethod 确实在thenPromise 的回调中被调用。

我遇到的问题是当我myClassMethod()调用其他类方法()时,即

myClassMethod(args) {
  aSecondClassMethod();
}

我得到错误说aSecondClassMethod是未定义的。我试过了

myClassMethod(args) {
  this.aSecondClassMethod();
}

但它给了我同样的错误。我想我可以通过为 myClassMethod() 调用的每个类方法声明一个 var 来解决这个问题。

   var aSecondClassMethod= this.aSecondClassMethod;

但这似乎很麻烦,以维护未来的代码。

我想知道是否有更好的方法来做到这一点。

标签: javascript

解决方案


使用箭头函数,因为它捕获this封闭上下文的值。

aPromise.then(value => this.myClassMethod(value));

推荐阅读