Vraag is event een globale variabele die overal binnen de terugroepketen toegankelijk is?


Ik was gewoon aan het spelen met gebeurtenislisteners met DOM en javascript en merkte dit op:

function chained(msg) {
    console.log(msg, event);
}

function onClick() {
    chained('the body was clicked');
}

document.body.addEventListener('click', onClick);

Nu is het grappige ... dit zal produceren:

"op het lichaam is geklikt, (MouseEvent)"

Dan vraag ik, waarom? hoe het het gebeurtenisobject passeert zonder het te verzenden op de chained bellen?

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);

Zelfs als ik verklaar de gebeurtenis obj te worden doorgegeven aan de onClick Functioneert als namedEventObj het is alleen beschikbaar voor onClick maar niet om chained functie ... ik heb dit en dit is logisch voor mij ... maar beslist niet voor event variabele beschikbaar voor de chained functie.

Iedereen weet waarom gedraagt ​​het zich zo?

Het enige dat ik kan bedenken is dat het evenement in feite is window.event en het maakt zichzelf beschikbaar wanneer een evenement wordt verzonden en een gebeurtenis ... maar dat zou betekenen dat elk element die gebeurtenisinformatie zou kunnen krijgen als deze tegelijkertijd wordt gebeld met de gebeurtenis wanneer deze wordt geactiveerd?

Ik gebruik Chrome 11.0.x


23
2018-06-21 13:58


oorsprong


antwoorden:


Je hebt toegang tot het huidige evenement via window.event. Gewoon gebruiken event impliciet toegang heeft window.event.


25
2018-06-21 14:02