Невозможно удалить прослушиватель событий с привязкой (this), хранящейся в функции-обертке - PullRequest
0 голосов
/ 13 января 2019
class Scroller {
  public listenerWrap = null;
  public elem = document.querySelector('.elem');

  addListener() {
    this.listener = this.listener.bind(this);
    this.elem.addEventListener('scroll', this.listenerWrap);
  }

  listener() {
    console.log('scroll', this);
  }

  removeListener() {
    this.elem.removeEventListener('scroll', this.listenerWrap);
  }
}

var s = new Scroller();
s.addListener();
s.removeListener();

Это упрощенная версия кода, который я использую. Я хочу добавить и удалить прослушиватель событий, который должен иметь this. Поэтому я оборачиваю функцию прослушивания binded в переменную listenerWrap, чтобы добавить и удалить точно такую ​​же функцию.

Проблема в том, что прослушиватель событий не удален, и я все еще вижу вывод console.log при прокрутке элемента.

...