Javascript 将类成员对象访问到匿名函数中的最干净方法

Javascript 将类成员对象访问到匿名函数中的最干净方法,javascript,ecmascript-6,this,anonymous-function,Javascript,Ecmascript 6,This,Anonymous Function,我最近遇到了将类成员访问到匿名函数的经典问题 class A { constructor(a) { this.a = a; } printA() { console.log(this.a); } useAnonymousFunction() { setTimeout(function(){ this.printA(); }) } } instance =

我最近遇到了将类成员访问到匿名函数的经典问题

class A {
    constructor(a) {
        this.a = a;
    }

    printA() {
        console.log(this.a);
    }

    useAnonymousFunction() {
        setTimeout(function(){
            this.printA();
        })
    }
}

instance = new A(42);

instance.useAnonymousFunction();//TypeError: this.printA is not a function
我找到的解决方案是使用经典技巧将“this”存储到另一个变量中

useAnonymousFunction() {
    //that or self
    let that = this;
    setTimeout(function(){
        that.printA();
    })
}
为了可读性,我在示例中使用了setTimeout,但它可能用于设置事件或AJAX请求

这个解决方案似乎相当丑陋。我试图寻找更优雅的东西,但什么也找不到。有一些基于绑定的解决方案,但它们似乎不是一直都有效(而且它们更不优雅)

这个解决方案真的是EC6的标准吗?使用使用匿名函数的元素是真正丑陋的部分吗


提前感谢您的洞察力

您正在寻找的优雅解决方案是使用箭头功能:

useAnonymousFunction() {
    setTimeout(() => this.printA())
}