Javascript 正在丢失事件侦听器的此作用域

Javascript 正在丢失事件侦听器的此作用域,javascript,Javascript,因此,我有一个类声明,在构造函数中,我想在窗口滚动时添加一个事件侦听器。大概是这样的: class MyClass { constructor(el, options) { // (...) initiating this properties and methods $window.on('scroll', this.onScroll); } 当我添加我的事件侦听器时,我丢失了onScroll创建自己的this实例的this作用域,但是如果我使

因此,我有一个类声明,在构造函数中,我想在窗口滚动时添加一个事件侦听器。大概是这样的:

class MyClass {
    constructor(el, options) {
        // (...) initiating this properties and methods
        $window.on('scroll', this.onScroll);
    }
当我添加我的事件侦听器时,我丢失了onScroll创建自己的this实例的this作用域,但是如果我使用$window.on'scroll',=>this.scroll;我把我的手表放在这个范围内。有没有办法保留我的作用域而不使用箭头功能?

您可以使用。它返回附加到给定上下文的函数

class MyClass {
    constructor(el, options) {
        $window.on('scroll', this.onScroll.bind(this));
    }
}
你可以用。它返回附加到给定上下文的函数

class MyClass {
    constructor(el, options) {
        $window.on('scroll', this.onScroll.bind(this));
    }
}
按如下方式操作:

class MyClass {
    constructor(el, options) {        
        $window.on('scroll', this.onScroll.bind(this));
    }
}
或者只需修改定义onScroll函数的方式:

this.onScroll = () => { ... }
按如下方式操作:

class MyClass {
    constructor(el, options) {        
        $window.on('scroll', this.onScroll.bind(this));
    }
}
或者只需修改定义onScroll函数的方式:

this.onScroll = () => { ... }