"e" 参数是如何分配给事件的?
How is the "e" parameter assigned to the event?
我可以看到一些关于 e
参数的线索,但有一件事我不能完全理解,尽管我确信这是一个显而易见的答案。
当 e
参数传递到从 addEventListener()
调用的函数时,e
看起来被分配给事件对象。我想了解的是 where/how 是否已分配?
element.addEventListener('click', function (e){
console.log(e);
}, false);
从事件调用函数时分配。您只是在定义一个回调,还没有调用它。
而不是这个:
element.addEventListener('click', function (e){
console.log(e);
},false);
你可以这样写:
function DoOnClick(parameter) {
console.log(parameter);
}
element.addEventListener('click', DoOnClick ,false);
在本例中,addEventLinster 的第二个参数是回调函数。回调函数是该事件发生时将调用的函数,它将以 new Event()
作为参数调用,Event parameter
将包含该事件生成的所有数据(X,Y 位置,它被触发的元素等)。
DoOnClick
函数没有什么特别的,如果你这样调用DoOnClick("Hello")
,那么控制台会打印Hello
。
如果您想了解更多 addEventListener
的实际工作原理,您可以查看 Mozilla documentation for this function.
它发生在内部,因为 the spec 是这样说的:
Call listener's callback's handleEvent
, with the event passed
to this algorithm as the first argument and event's
currentTarget
attribute value as callback this value.
所以回调函数接收一个参数。您可以将其命名为 e
、event
或 foobar
。你甚至可以不命名它,并使用 arguments[0]
.
访问它
我可以看到一些关于 e
参数的线索,但有一件事我不能完全理解,尽管我确信这是一个显而易见的答案。
当 e
参数传递到从 addEventListener()
调用的函数时,e
看起来被分配给事件对象。我想了解的是 where/how 是否已分配?
element.addEventListener('click', function (e){
console.log(e);
}, false);
从事件调用函数时分配。您只是在定义一个回调,还没有调用它。
而不是这个:
element.addEventListener('click', function (e){
console.log(e);
},false);
你可以这样写:
function DoOnClick(parameter) {
console.log(parameter);
}
element.addEventListener('click', DoOnClick ,false);
在本例中,addEventLinster 的第二个参数是回调函数。回调函数是该事件发生时将调用的函数,它将以 new Event()
作为参数调用,Event parameter
将包含该事件生成的所有数据(X,Y 位置,它被触发的元素等)。
DoOnClick
函数没有什么特别的,如果你这样调用DoOnClick("Hello")
,那么控制台会打印Hello
。
如果您想了解更多 addEventListener
的实际工作原理,您可以查看 Mozilla documentation for this function.
它发生在内部,因为 the spec 是这样说的:
Call listener's callback's
handleEvent
, with the event passed to this algorithm as the first argument and event'scurrentTarget
attribute value as callback this value.
所以回调函数接收一个参数。您可以将其命名为 e
、event
或 foobar
。你甚至可以不命名它,并使用 arguments[0]
.