as3: Verwendung dieses Schlüsselworts

8

Ich frage mich nur, wann es notwendig ist, das Schlüsselwort this.somevar anstatt nur somevar zu verwenden.

Normalerweise benutze ich das unter folgenden Umständen nicht:

  1. Ich habe eine var private für eine Klasse gemacht
  2. Ich beziehe mich darauf, um es als lokale Variable für diese Klasse zu verwenden

richtig? oder ist das nicht nur ein Stilding?

    
jml 27.12.2009, 21:06
quelle

5 Antworten

9

Sie müssen im Allgemeinen nur diesen.Varname verwenden, wenn Sie sich in einer Funktion befinden, die einen Parameter mit demselben Namen hat und auf die Elementvariable verweisen soll. Ob der Member var privat ist oder nicht, hat keine Auswirkungen auf die Verwendung von 'this'.

    
Simon Groenewolt 27.12.2009, 21:15
quelle
4

Wie bereits erwähnt, müssen Sie this nicht in einem sehr einfachen Fall verwenden, in dem Sie auf eine Klassenmitgliedsvariable von einer Klassenmembermethode verweisen möchten, zB:

%Vor%

Beachten Sie jedoch, dass es Fälle gibt, in denen this (die zu dem Zeitpunkt ausgewertet werden, zu dem es in einem Programm statt in Instantiierung wie man erraten kann) sich nicht auf die Klasse bezieht, in der es steht geschrieben. Genauer gesagt geschieht dies, wenn Sie es in einer Funktion verwenden, die mit einer Methode wie Funktion.Anwendung () . Diese Methode ermöglicht dem Aufrufer, das Objekt anzugeben, auf das von this verwiesen wird, und es wird häufig in Rückrufen verwendet, z. in Tweening-Engines.

%Vor%

Hier ist ein Beispiel mit dem beliebten Tweening-Engine-Tweener, bei dem das -Objekt standardmäßig auf das getweente Objekt (dh den MovieClip _mc) verweist und nicht auf eine Instanz der Klasse, in der Dies ist geschrieben (dh MyClass ).

%Vor%

Im obigen Code ist die Verwendung von this erforderlich, weil wir die Laufzeit explizit anweisen wollen, den sichtbaren Zustand unseres MovieClip (_mc) zu ändern. Hätten wir this nicht verwendet, hätte die sichtbare Referenz aufgrund der Funktionsschließung auf MyClass.visible verwiesen.

    
richardolsson 28.12.2009 07:56
quelle
3

Wenn Sie dies innerhalb eines Objekts verwenden, bezieht sich dies auf das Objekt selbst. Hier ist ein Beispiel, wo Sie es verwenden würden:

%Vor%     
slayerIQ 27.12.2009 21:14
quelle
2

Etwas, das Sie den anderen Antworten hinzufügen können: In ActionScript 3 können Sie auf Elementvariablen und Funktionen im Wesentlichen auf zwei Arten verweisen:

%Vor%

Dies mag sinnlos erscheinen, aber es gibt bestimmte Fälle, in denen zum Beispiel das Verketten von Strings in verschiedene Kombinationen zur Verwendung zufälliger, dynamisch spezifizierter Variablen oder Funktionen in einem Objekt nützlich sein kann, wie folgt:

%Vor%

Aber was, wenn Sie Strings verwenden möchten, um auf Variablen oder Funktionen innerhalb von this zuzugreifen? Dies funktioniert nicht:

%Vor%

Was Sie stattdessen tun müssen, ist dies:

%Vor%

Andere Leute haben diesen nächsten Grund bereits erwähnt, aber das erste Mal, dass ich this.var oder this.func() in AS3 ernst genommen habe (und ich schaue immer noch auf seine Verwendung mit deutlicher Verachtung) war, als ich UIComponent.setLayoutBoundsSize() überging mit einem Parameter namens width und einem Parameter namens height . UIComponent verwendet diese Namen auch als Eigenschaften, und ich mag es nicht, beim Überschreiben einer Methode Parameternamen zu ändern. So wurden Dinge wie this.width = x; oder this.height = y; plötzlich relevant. Abgesehen von diesen beiden Szenarien sehe ich keinen Grund, this zu verwenden, wenn intern auf eine Variable oder Funktion im selben Objekt verwiesen wird.

Als Nebenbemerkung, wenn Sie diese nächste Kleinigkeit wegen der Art, wie eine API erstellt wurde, oder aus einem anderen, wirklich guten Grund machen müssen (versuchen Sie, die Dinge nicht selbst so einzurichten), könnten Sie das gelegentlich tun Übergeben Sie this in als ein Argument an eine Funktion oder etwas, das einen Verweis auf das aufrufende Objekt benötigt.

    
Panzercrisis 13.12.2013 15:25
quelle
0

Wie wäre es damit, this keyword zu verwenden, vor allem, weil es Ihnen hilft, schnell zu erkennen, ob die Variable lokal oder global (Methode oder Klasse) im Code ist. Alles, was Sie brauchen, ist ein Teil des Codes, in dem Sie this sehen können und dann sofort erkennen, dass dies eine global sichtbare Klassenvariable ist, anstatt für die Zieldefinition zusätzlich zu scrollen.

    
rook 13.12.2013 13:58
quelle

Tags und Links