在JavaScript中,使用bind()添加的函数作为事件侦听器,最好的方法是什么来删除它?
示例
使用此方法的示例:
示例
(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", ___________);
};
})();
我能想到的唯一方法是跟踪每个使用bind添加的侦听器。使用此方法的示例:
(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);
};
})();
有更好的方法可以做到这一点吗?
this.clickListener = this.clickListener.bind(this);
和this.myButton.addEventListener("click", this.clickListener);
以外,您在做什么? - Esailija