Ereignis-Listener entfernen, der mit bind hinzugefügt wurde
Wie kann in JavaScript eine als Ereignis-Listener hinzugefügte Funktion mit bind () am besten entfernt werden?
Beispiel
(function(){
// constructor
MyClass = function() {
this.myButton = document.getElementById("myButtonID");
this.myButton.addEventListener("click", this.clickListener.bind(this));
};
MyClass.prototype.clickListener = function(event) {
console.log(this); // must be MyClass
};
// public method
MyClass.prototype.disableButton = function() {
this.myButton.removeEventListener("click", ___________);
};
})();
Die einzige Möglichkeit, die ich mir vorstellen kann, besteht darin, jeden mit bind hinzugefügten Listener im Auge zu behalten.
Das obige Beispiel mit dieser Methode:
(function(){
// constructor
MyClass = function() {
this.myButton = document.getElementById("myButtonID");
this.clickListenerBind = this.clickListener.bind(this);
this.myButton.addEventListener("click", this.clickListenerBind);
};
MyClass.prototype.clickListener = function(event) {
console.log(this); // must be MyClass
};
// public method
MyClass.prototype.disableButton = function() {
this.myButton.removeEventListener("click", this.clickListenerBind);
};
})();
Gibt es dafür bessere Möglichkeiten?