Поэтому у меня есть объявление класса, и в моем конструкторе я хочу добавить прослушиватель событий при прокрутке окна. Что-то вроде этого:
class MyClass {
constructor(el, options) {
// (...) initiating this properties and methods
$window.on('scroll', this.onScroll);
}
Когда я добавляю мой слушатель событий я потерять this
сфера (OnScroll() создает свой собственный this
экземпляр), но если я использую $window.on('scroll',() => this.scroll());
Я сохраняю this
сферу. Есть ли способ сохранить мой охват и не использовать функцию стрелки?
Вы можете использовать функцию # bind. Он возвращает функцию, привязанную к данному контексту.
class MyClass {
constructor(el, options) {
$window.on('scroll', this.onScroll.bind(this));
}
}
Сделайте это, как показано ниже:
class MyClass {
constructor(el, options) {
$window.on('scroll', this.onScroll.bind(this));
}
}
Или просто измените способ определения функцииScroll:
this.onScroll = () => { ... }