事件是回调链中随处可访问的全局变量吗?
我只是在玩弄 DOM 和 Javascript 的事件侦听器,并确实注意到了这一点:
I was just playing around with event listeners with DOM and Javascript and did notice this:
function chained(msg) {
console.log(msg, event);
}
function onClick() {
chained('the body was clicked');
}
document.body.addEventListener('click', onClick);
现在有趣的是......这将输出:
Now the funny thing...this will output:
身体被点击,(MouseEvent)"
"the body was clicked, (MouseEvent)"
那我问,为什么?它如何传递事件对象而不在 chained
调用中发送它?
Then I ask, why? how does it passes the event object without sending it on the chained
call?
function chained(msg) {
console.log(msg, namedEventObj); //throw error namedEventObj is not defined
}
function onClick(namedEventObj) {
console.log(event); //outputs (MouseEvent);
console.log(nameEventObj); //outputs (MouseEvent);
chained('the body was clicked');
}
document.body.addEventListener('click', onClick);
即使我将要在 onClick
函数上传递的事件 obj 声明为 namedEventObj
它也只能用于 onClick
而不能用于 chained
函数...我知道了,这对我来说很有意义...但绝对不是 event
变量可用于 chained
函数.
Even If I declare the event obj to be passed on the onClick
function as namedEventObj
it will available only to onClick
but not to chained
function...I got this and this makes sense for me...but definitely not the event
variable to be available to the chained
function.
有人知道它为什么会这样吗?
Anyone know why does it behaves like this?
我唯一能想到的是事件实际上是 window.event
并且当某些事件调度和事件时它使自己可用......但这意味着任何元素都可以得到它事件触发时是否与事件同时调用?
The only thing I can think of is that event is in fact window.event
and it makes itself available when some event dispatches and Event...but that would mean that any element could get that event information if called at the same time as the event when it triggers?
我使用的是 Chrome 11.0.x
I am using Chrome 11.0.x
推荐答案
可以通过window.event
访问当前事件.仅仅使用 event
就是隐式访问 window.event
.
One can access the current event through window.event
. Just using event
is implicitly accessing window.event
.
相关文章