Javascript 如何从回调中引用类的属性

Javascript 如何从回调中引用类的属性,javascript,Javascript,鉴于以下类别: class TimerFunk { constructor(someObject){ this.a = 1 this.someObject = someObject } funk(){ console.log(this.a) if(this.a > 2){ return } this.a++ this.someObj

鉴于以下类别:

class TimerFunk {
    constructor(someObject){
        this.a = 1
        this.someObject = someObject
    }
    funk(){
        console.log(this.a)
        if(this.a > 2){
            return
        }
        this.a++
        this.someObject.execCallback(this.funk)
    }
}
执行以下命令时:

t = new TimerFunk({execCallback:function(callback){callback()}})
t.funk()
打算将属性
TimerFunk.a
记录到控制台,直到
this.a>2
。但是,循环只执行一次:

VM2097:9 1
VM2097:9 Uncaught TypeError: Cannot read property 'a' of undefined
    at funk (<anonymous>:9:25)
    at Object.execCallback (<anonymous>:5:13)
    at TimerFunk.funk (<anonymous>:13:25)
    at <anonymous>:1:3
VM2097:9 1
VM2097:9未捕获类型错误:无法读取未定义的属性“a”
在芬克(9:25)
在Object.execCallback(:5:13)
在TimerFunk.funk(:13:25)
时间:1:3
通过调试,我发现这是因为在第一个循环中,this表示对象
t
,而在第二个循环中,this表示对象
someObject


是否有任何方法可以修复此问题并允许我从执行的回调中访问类属性?

调用回调时,不会将
TimerFunk
实例
t
作为
对象:

function(callback){callback()}}
解决方案是将回调的
这个
对象绑定到
TimerFunk
实例:

funk() {
  ...
  this.someObject.execCallback(this.funk.bind(this));
}
或者,您可以通过
回调显式传递
t
作为
对象。调用(t)


直觉上我会假设this.funk.bind(this)不会返回funk。很高兴这个功能存在,虽然我希望尽可能避免将t作为参数传递!谢谢
t = new TimerFunk({execCallback:function(callback){callback.call(t)}});