Gibt es eine bessere Methode als eine Variable zu setzen?

8

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?

    
Galen 25.08.2010, 23:58
quelle

5 Antworten

5

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.

%Vor%

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.

    
Anurag 26.08.2010, 00:31
quelle
4

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.

    
gnarf 26.08.2010 00:03
quelle
1

Sie finden diesen Code in vielen Bibliotheken und Projekten ziemlich häufig:

%Vor%

Betrachten Sie zum Beispiel diese Funktion:

%Vor%

Lesen Sie mehr hier .

    
Yanick Rochon 26.08.2010 00:23
quelle
0

Ich habe das Muster vorher gesehen (mit der fraglichen Variablen, die aufgerufen wird), also nehme ich an, dass es tatsächlich ein gewöhnliches Javascriptmuster ist, das nicht nur eine sauberere Lösung hat.

    
Jasper 26.08.2010 00:03
quelle
0

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.

Ссылка

    
JeremyWeir 26.08.2010 00:17
quelle