Я просто играл со слушателями событий с помощью DOM и javascript и заметил это:
function chained(msg) {
console.log(msg, event);
}
function onClick() {
chained('the body was clicked');
}
document.body.addEventListener('click', onClick);
Теперь забавная вещь ... это выдаст:
"тело щелкнуло, (MouseEvent) "
Тогда я спрашиваю, почему?как он передает объект события, не отправляя его при вызове chained
?
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);
Даже если я объявлю событие obj для передачи функции onClick
как namedEventObj
, оно будет доступно толькодо onClick
, но не до chained
функции ... Я понял это, и это имеет для меня смысл ... но определенно не переменная event
, которая будет доступна для функции chained
.
Кто-нибудь знает, почему он так себя ведет?
Единственное, о чем я могу думать, это то, что событие на самом деле window.event
и оно становится доступным, когда отправляется какое-то событие и событие ... но это будет означатьлюбой элемент может получить эту информацию о событии, если вызывается одновременно с событием, когда он запускается?
Я использую Chrome 11.0.x