所以我有一个类声明,在我的构造函数中,我想在窗口滚动时添加一个事件监听器。像这样:
class MyClass {
constructor(el, options) {
// (...) initiating this properties and methods
$window.on('scroll', this.onScroll);
}
当我添加我的事件监听器时,我失去了this
范围(onScroll()创建了自己的this
实例),但如果我使用$window.on('scroll', () => this.scroll());
,我保留this
范围。有没有办法保留我的范围而不使用箭头功能?
答案 0 :(得分:3)
您可以使用Function#bind。它返回附加到给定上下文的函数。
class MyClass {
constructor(el, options) {
$window.on('scroll', this.onScroll.bind(this));
}
}
答案 1 :(得分:2)
如下所示:
class MyClass {
constructor(el, options) {
$window.on('scroll', this.onScroll.bind(this));
}
}
或者只是修改你定义onScroll函数的方式:
this.onScroll = () => { ... }