In meinen Javascript-Objekten habe ich Folgendes geschrieben:
%Vor%Es scheint, dass es die einzige Möglichkeit ist, Member-Variablen an externe Funktionen zu übergeben ...
%Vor% Das funktioniert nicht, ich muss das Objekt in eine Membervariable kopieren und das neue Objekt übergeben (und alle this
durch this_object
ersetzen)
Das fühlt sich hässlich an. Gibt es einen "besseren" oder "sauberen" Weg, oder ist das meine einzige Option?
Sicher gibt es eine bessere Methode. Es beinhaltet das Erstellen einer Funktion, bei der der this
-Kontext bereits an ein bestimmtes Objekt gebunden ist.
Damit sich der this
-Kontext auf das aktuelle Objekt bezieht, rufen Sie die Methode bind()
für die Funktion auf und übergeben Sie den erforderlichen Kontext als Parameter.
Dies ist jetzt Teil des ECMAScript-Standards, und wenn ein Browser es nicht nativ implementiert, ist es leicht, es selbst zu tun.
%Vor%Sehen Sie sich alle Fragen und Antworten zu SO in Bezug auf diese.
Es ist eigentlich ein ziemlich übliches Muster, wenn man mit JavaScript arbeitet, um eine Referenz von this
in einer lokalen Variable, d. h. var myThing=this;
, zu speichern. Remember-Funktionen haben Zugriff auf lokale Variablen, die in ihrem Gültigkeitsbereich definiert sind. Auf alle in den enthaltenden Funktionen definierten Variablen kann zugegriffen werden.
Sie finden diesen Code in vielen Bibliotheken und Projekten ziemlich häufig:
%Vor%Betrachten Sie zum Beispiel diese Funktion:
%Vor%Lesen Sie mehr hier .
Ich bin mir nicht sicher, ob das für das Szenario, mit dem Sie es zu tun haben, hilfreich ist, aber ich habe festgestellt, dass YUIs benutzerdefiniertes Event-Dienstprogramm gut mit Scoping-Problemen mit diesen und Schließungen funktioniert. Es ist ein ereignisgesteuertes Modell und eine etwas andere Art zu denken, aber es könnte zumindest einen Besuch wert sein.
Tags und Links javascript javascript-objects oop callback