Struppi: Beschreiben ist eine Kunst

Beitrag lesen

Ja, aber ich habe noch nicht ganz nachvollziehen können, warum das an der Stelle quasi zweimal übergeben werden muss. Einmal steht es ja in "function(e)" und dann nochmal in "move(e)".

Das function(e) ist nur ein Funktionkörper, ein closure, das beschreibt, mit welchen Parameter, im Falle des auftreten des Events, die Funktion aufgerufen wird.

Du musst dir das ganze so vorstellen.

1. du definierst eine Funktion
function meineEventFunktion(parameter) {..}

2. du übergibst dem Eventhandler die Funktions_referenz_ - noch mal! nur die Referenz auf die Funktion -

objekt.onhandler = meineEventFunktion; // keine Klammer!

3. Wenn der Event eintritt mach der Browser folgendes:
* eine Eventobjekt erzeugen
* nach schauen ob der Eventhandler eine Funktionsreferenz enthält
* Funktion aufrufen

Das sieht dann intern (schematisch als JS ausgedrückt) so aus:

  
var evt = new Event(....);  
if(typeof this.onhandler == 'function')  
this.onhandler(event)  

Hier wird die Funktion dann endlich aufgerufen, mit dem Eventobjekt als Parameter und dieser wird dann in dem Beispiel an die Funktion move() weitergegeben.

Struppi.