Angenommen, ich habe eine Funktion a:
%Vor%Wenn also a.set () aufgerufen wird, wird die anonyme Funktion aufgerufen. Aber das wird nicht funktionieren, da dies zu dem Zeitpunkt ist, an dem die Funktion ausgelöst wird, auf das Fensterobjekt zeigt. Es ist auch keine gute Idee, a.b zu verwenden, da es mehrere Instanzen von a geben kann.
Was ist eine gute Lösung für dieses Problem?
Speichern Sie einen Verweis auf this
:
Die an setInterval
übergebene anonyme Funktion hat Zugriff auf alle Variablen in ihrem enthaltenden Bereich, d. h. auf alle lokalen Variablen von function a()
. Die Magie von JS-Closures hält diese Variablen am Leben, selbst nachdem a()
abgeschlossen wurde, und jeder Aufruf von a()
erhält seine eigene Schließung.
In Ihrem Fall können Sie einfach:
%Vor% Normalerweise können wir auch eine Hilfsmethode Function.prototype.bind
für fix die this
Referenz.
Tags und Links javascript