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:
richtig? oder ist das nicht nur ein Stilding?
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'.
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
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.
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:
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.
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.
Tags und Links actionscript-3 flex