如何获取这个内联函数并将其转换为方法,同时保留对此函数的访问权限



我有一个JavaScript类,它有这样的结构:

class MyClass () {
    myMethod() {
        myCallback = (response) => {
            // Do a bunch of stuff by referencing and altering properties in this
        }
        apiFunction(this.CLASS_PROP, myCallback);
    }
}

myMethod已经很长了,而myCallback的内容使其更长,所以我尝试将其转换为以下结构:

class MyClass () {
    myMethod() {
        apiFunction(this.CLASS_PROP, this.myCallback);
    }
    myCallback = (response) => {
        // Do a bunch of stuff by referencing and altering properties in this
    }
}

尽管第一个版本运行良好,但第二个版本丢失了对MyClass实例的引用,而this指向的是,我认为,调用是实际调用它的API;词汇语境;并不意味着在哪里定义函数,而是在哪里调用函数。

但我的问题是,有没有办法把myMethod内部的函数分解成MyClass的实例方法?

有很多方法可以实现这一点,其中之一就是

class MyClass  {
    myMethod() {
        apiFunction(this.CLASS_PROP, r => this._myCallback(r));
    }
    _myCallback(response) {
        // Do a bunch of stuff by referencing and altering properties in this
    }
}

注意,在apiFunction中有一个箭头函数,而_myCallback是一个普通的方法(=不是箭头(。相反,就像在你的代码中一样,它不起作用。

_myCallback中的下划线表示一个私有方法(一种约定,而非特殊语法(。

最新更新