我有以下内容:
class Button_Event {
add_click() {
this.button_jquery_object.on('click', function(e){
this.add_loading();
run_function_by_name(this.ajax_callback).done(function() {
this.remove_loading();
});
});
}
}
但是当我运行它时,会发生以下错误:
Uncaught TypeError: this.add_loading is not a function
...这是正确的。我试图在匿名函数中调用类的方法。我觉得我不应该这样做,但我需要这样做。该怎么办?
我相信我也在寻求以某种方式在匿名函数主体上强制执行“ this”范围。
答案 0 :(得分:0)
传统解决方案:将this
存储在本地变量中
add_click() {
const self = this;
this.button_jquery_object.on('click', function(e){
self.add_loading();
});
}
现代解决方案:使用箭头功能,该功能会自动从上下文中绑定this
add_click() {
this.button_jquery_object.on('click', (e) => {
this.add_loading();
});
}
奇怪的解决方案:手动将this
绑定到函数
add_click() {
this.button_jquery_object.on('click', function(e){
this.add_loading();
}.bind(this));
}