使用自执行函数将闭包作为addEventListener中的侦听器

时间:2013-10-16 23:52:46

标签: javascript closures

我使用以下代码在DOM元素上添加事件侦听器:

var me = this;

element.addEventListener('click', function(element) {
    return function(evt) { 
        me.handler(evt, element); 
    };
} (element) , false);

当我单击元素时,将使用事件和元素作为参数调用处理程序。

我已阅读有关闭包here的信息,但我仍然不清楚事件对象如何与evt变量相关联。

1 个答案:

答案 0 :(得分:1)

为什么不使用

var me = this;
element.addEventListener('click', function(evt) { 
     me.handler(evt, element); 
} , false);
  

我还不清楚事件对象如何与evt相关联   变量

如果使用addEventListener,则在触发事件时,事件侦听器会收到一个参数,即事件。

然后,当您添加事件侦听器时,请使用以下代码

function(element) {
    return function(evt) { 
        me.handler(evt, element); 
    };
} (element)
评估

并返回以下函数

function(evt) { 
    me.handler(evt, element); 
}

这是事件处理程序。然后,它的第一个参数evt就是事件。