我知道有很多类似的问题,但不知何故 我没有找到任何关于这个问题的东西 - 你能指出我正确的方向
假设我们有一个功能
window.logMeThis = function(msg){
console.log(msg);
}
然后我需要添加一个事件监听器
window.addEventListener('keypress', window.logMeThis.bind(null, "something"));
起初看起来很好 - 但.bind会创建一个新的fn
现在我无法删除监听器
window.removeEventListener('keypress', window.logMeThis);
答案 0 :(得分:3)
你可以这样做:
window.logMeThis = function(msg){
console.log(msg);
}
var myFunc = window.logMeThis.bind(null, "something");
window.addEventListener('keypress', myFunc);
要删除侦听器,只需执行此操作:
window.removeEventListener('keypress', myFunc);
基本上,你需要有一个函数的引用来删除它。
答案 1 :(得分:0)
如果必须将函数绑定到特定上下文,则可以执行以下操作:
var boundFunction = window.logMeThis.bind(null, "something");
window.addEventListener('keypress', boundFunction);
现在您可以参考删除它的功能。
答案 2 :(得分:0)
你是对的:
此方法创建一个函数,其正文与函数类似 它被称为
只需传递现有函数,您就可以像这样引用它:
var i = 0;
window.logMeThis = function(msg){
console.log(msg+''+i);
i++;
}
window.addEventListener('keypress', window.logMeThis, false);
window.removeEventListener('keypress', window.logMeThis, false);