JS Event Listener,其函数有一个参数

时间:2014-10-10 21:21:38

标签: javascript function javascript-events

不确定如何为这个问题设置正确的标题,所以我想这就是为什么我找不到与之相关的任何内容。

如果不是已经重复,那么对标题的建议会很好。

我想知道如何使用我必须传递一个参数的函数来实际添加/删除事件侦听器。

简单的例子应该如下:

window.addEventListener('resize', anFunction, false);
window.removeEventListener('resize', anFunction, false);

但是如何设置必须包含参数的相同功能?以下示例当​​然无效,因为我不知道该怎么做。

window.addEventListener('resize', anFunction(parameter), false);
window.removeEventListener('resize', anFunction(parameter), false);

2 个答案:

答案 0 :(得分:1)

例如,您可以使用以下方法之一:

  • 包装功能:

    function resizeListener() {
        anFunction(parameter);
    }
    
  • Function.prototype.bind

    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的值),但它也可以很好地用于你所描述的内容。