如何在附加.bind(this)的回调上删除EventListener

Sup*_*per 1 javascript events javascript-events

如果我做

document.addEventListener("mousedown", this.foo);
Run Code Online (Sandbox Code Playgroud)

然后在内部功能this.foo 然后删除它

document.removeEventListener("mousedown", this.foo);
Run Code Online (Sandbox Code Playgroud)

然后它工作.

但是,如果我做document.addEventListener("mousedown",this.foo.bind(this));

然后该功能不会被删除.

有什么我能做的吗?我必须在foo中拥有正确的上下文.

Pra*_*ant 5

this.foo.bind(this)返回一个与函数不同的函数this.foo.所以,你需要做的是继续引用bind返回的函数

var handler = this.foo.bind(this);

document.addEventListener("mousedown", handler);

document.removeEventListener("mousedown", handler);
Run Code Online (Sandbox Code Playgroud)