我有一个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
中的下划线表示一个私有方法(一种约定,而非特殊语法(。