Hallo,
Das Skript speichert nur eine Referenz auf die Funktion, d.h. beim dritten Aufruf wird die erste Funktion nicht mehr aufgerufen.
Das stimmt nicht. Es wrappt speichert die bestehende Funktion in einer lokalen Variable und erzeugt dann eine Closure, die später noch Zugriff auf diese Variable hat. Und diese bestehende Funktion wird dann ausgeführt, danach die neu übergebene.
Ruft man die Funktion mehrfach auf, wrappt sie die gegenwärtige onload-Funktion immer wieder durch eine Closure, ad infinitum.
Am Ende kommt dann so eine Verschachtelung heraus (ist nur eine Veranschaulichung):
window.onload = function () {
(function () {
(function () {
f1();
f2();
})();
f3();
})();
f4();
// usw.
};
Es gibt ausgereiftere Event Funktionen.
Ja.
Mathias