Я просто играл с прослушивателями событий с 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