Anonymous handler de evenimente
Funcția globală
Adesea, vreau să șterg managmentul evenimentului imediat după ce sa întâmplat evenimentul. Este mult mai ușor atunci când manipulatorul de evenimente nu este anonim, dar ar trebui definit în locul unei funcții globale, cum ar fi:
În acest exemplu, ștergerea unui ascultător al evenimentului este suficient de simplă, dar acest mod de a crea un ascultător al evenimentului are dezavantaje. Pentru ca manipulatorul de clic să aibă acces la variabila mesajului, trebuie să declare variabila în domeniul global. Și acest lucru, din punct de vedere tehnic, nu este atât de mare.
Să ne întoarcem la primul nostru exemplu JS, care nu are probleme. În acest exemplu, ascultătorul evenimentelor este o funcție anonimă. Pentru a elimina un manipulator de evenimente de acest tip, în interiorul manipulatorului în sine, trebuie să luăm o referință la această funcție. Pentru aceasta, vom folosi argumentele variabile. care este posibilă în orice funcție în mod automat. Aceasta conține nu numai argumentele transmise funcției, ci și referința la funcția însăși: arguments.callee. De asemenea, putem folosi această referință pentru a elimina un manipulator de evenimente anonim după ce a fost apelat.
Ștergerea unui ascultător anonim
Aici este primul exemplu de cod cu o linie suplimentară pentru eliminarea unui ascultător de evenimente anonime.
Codul utilizează e.type ca tip de eveniment și e.eventPhase ca fază a evenimentelor.
Varianta arguments.callee este foarte utilă în astfel de cazuri.
Aceste caracteristici slabe documentate sunt ușor de utilizat. Includeți-le în arsenalul dvs.
Citiți același articol pe tema: