不确定如何为这个问题设置正确的标题,所以我想这就是为什么我找不到与之相关的任何内容。
如果不是已经重复,那么对标题的建议会很好。
我想知道如何使用我必须传递一个参数的函数来实际添加/删除事件侦听器。
简单的例子应该如下:
window.addEventListener('resize', anFunction, false);
window.removeEventListener('resize', anFunction, false);
但是如何设置必须包含参数的相同功能?以下示例当然无效,因为我不知道该怎么做。
window.addEventListener('resize', anFunction(parameter), false);
window.removeEventListener('resize', anFunction(parameter), false);
答案 0 :(得分:1)
例如,您可以使用以下方法之一:
包装功能:
function resizeListener() {
anFunction(parameter);
}
var resizeListener = anFunction.bind(void 0, parameter);
arrow function(EcmaScript6):
var resizeListener = e => anFunction(parameter);
然后:
window.addEventListener('resize', resizeListener, false);
window.removeEventListener('resize', resizeListener, false);
答案 1 :(得分:1)
还有相对较新的(IE9 +)function.prototype.bind method
它的工作原理如下:
var myVar = "123";
var myHandler = function(myVar) {
console.log("Resize handler with arg: ", myVar);
// => Resize handler with arg: 123
};
window.addEventListener("resize", myHandler.bind(this, myVar));
它意味着用于控制回调的上下文(this
的值),但它也可以很好地用于你所描述的内容。