Javascript addEventListener-Funktion
Ich bin neu auf Event-Handler und ich haben einen code, der unten geschrieben
document.addEventListener("DOMContentLoaded", function() {
initialiseMediaPlayer();
}, false);
Gibt es einen Unterschied im schreiben den gleichen code wie
document.addEventListener("DOMContentLoaded", initialiseMediaPlayer();, false);
Letztendlich sind wir dem Aufruf der gleichen Funktion, so macht es einen Unterschied, oder gibt es irgendeinen Vorteil schriftlich in der Weise vor?
Letzteres nicht tun, was Sie denken
Letzteres ist ein syntax Fehler
Sie übergeben der Rückgabewert von initialiseMediaPlayer an den Ereignis-listener. Entfernen Sie den Aufruf () und Sie werden die gleichen sein
bis auf den Rückgabewert
Letzteres ist ein syntax Fehler
Sie übergeben der Rückgabewert von initialiseMediaPlayer an den Ereignis-listener. Entfernen Sie den Aufruf () und Sie werden die gleichen sein
bis auf den Rückgabewert
InformationsquelleAutor Bazinga777 | 2013-03-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ausgeführt wird
initialiseMediaPlayer
wenn das dom-Inhalt geladen wird.einen syntax-Fehler; wenn Sie entfernen Sie das Semikolon:
Anrufe
initialiseMediaPlayer
sofort, geht dann der Rückgabewert (die wahrscheinlich nicht eine Funktion)addEventListener
. Dies nicht handeln, wie gewünscht.Können Sie tun
(entfernen Sie die Klammern = function call). Dann
initialiseMediaPlayer
ausgeführt werden, die auf dom-Inhalte geladen und so handeln, wie gewünscht.Jedoch, anders als im ersten Fall
initialiseMediaPlayer
tatsächlich erhalten die Argumente von dem browser. Auch Ihr Rückgabewert empfangen durch den browser. Im Falle vonDOMContentLoaded
, wahrscheinlich sind das spielt keine große Rolle.Sie auch vermeiden, die Schaffung einer zusätzlichen anonymen Funktion, wenn Sie pass
initialiseMediaPlayer
direkt. Nochmal, der Effekt ist nicht wirklich wahrnehmbar, für den Nutzer Sicht.dieser parameter wird ein " event-Objekt, dessen bemerkenswerteste Eigenschaft ist das Dokument verweist. Ich kann Wetten, dass Sie die initialiser nicht einmal bemerken, es ist ein event-Objekt übergeben wird.
Danke, ich fand es heraus, mit .bind mein problem lösen.
InformationsquelleAutor John Dvorak
1). Ja, es ist der große Unterschied. Die zweite version wird ein Fehler ausgelöst. Aber, auch wenn du es reparieren wie diese:
initialiseMediaPlayer
wird nicht aufgerufen werden, aufDOMContentLoaded
weil()
machen es sofort ausführen, während Sie Durchlaufen eine referece zu einem Funktion, nicht sein Ergebnis.2). Ein weiterer signifikanter Unterschied ist die Kontext des invocation -.
initialiseMediaPlayer
aufgerufen, im Rahmen derdocument
Objekt. Während die erste version namens inWindow
Objekt Kontext.Kontext bedeutet, dass
this
beziehen sich auf die verschiedenen Objekte, die sich in Ihrer Funktion.InformationsquelleAutor dfsq
Das zweite argument auf die
addEventListener()
Funktion akzeptiert Typ Funktion. Sie können also den passinitialiseMediaPlayer();
denn das ist ein Funktions-Aufruf.Was Sie tun können, ist:
InformationsquelleAutor sweetamylase
im ersten Fall
der anonymen Funktion
function(){initialiseMediaPlayer();}
registriert werden ausgelöst, wenn das Dokument den event "DOMContentLoaded' wird ausgelöst,im zweiten Fall:
was gemeldet ist, wird der Ereignis-listener wird das Ergebnis des Ausdrucks
initialiseMediaPlayer()
so, ja, es gibt einen Unterschied 🙂
InformationsquelleAutor Francisco Meza