无法使用包装器函数

时间:2019-01-13 10:17:21

标签: events event-handling bind addeventlistener removeeventlistener

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的输出。

0 个答案:

没有答案