可以通过引用javascript中的函数来传递参数

时间:2013-06-17 17:55:46

标签: javascript-events

看看这个:

addEventListener("mouseover", function(e){..code..},false);

可以写成

function mouseover(e){ ... }
addEventListener('mouseover', mouseover, false);

所以这里mouseover函数接收事件对象,即使它刚被引用而没有传递任何参数。我认为addeventlistener函数可能执行所有引用/匿名的函数,如下所示:

....
suppose like this
function addeventlistner (a,b,c){
b(e);
}

为什么我要问这个?

我无法理解addeventlistner函数function (e) {...code...}中的来源

据我所知,addeventlistner的第二个参数可以是目标对象或函数。哪个传递了一个事件对象。有意义的是,函数可以对传递给它的对象做一些事情,对象对这个传递的事件对象做了什么。

这样做的原因是我试图在一些示例代码中理解函数从addeventlistner获取e,类似于上面的代码,并使用了e.msg,e.data和e.cmd等属性....我不知道他们来自哪里。

它们是Event对象的属性吗?我找不到他们了!

1 个答案:

答案 0 :(得分:1)

当您添加事件侦听器时,您添加的函数会根据事件的类型(单击,滚动等)传递一个事件对象。

http://www.w3schools.com/jsref/dom_obj_event.asp

window.addEventListener("click", function(event) {
    alert(event.pageX + ", " + event.pageY);
}, false);
// same as
window.addEventListener("click", function(e) {
    alert(e.pageX + ", " + e.pageY);
}, false);

参数名称可以是它仍代表事件对象的任何内容。

编辑列出事件对象的所有属性和功能

window.addEventListener("click", function(event) {
    var all = "";
    for(var prop in event) {
        all += prop + " : " + event[prop] + "\n";
    }
    alert(all);
}, false);