Depuis quelques temps, j'ai décidé de ne plus utiliser le this pour le ciblage de mes méthodes et propriétés à l'intérieur d'une classe. Ca paraît plutôt logique, et c'est une pratique tout à fait répandue dans d'autres langages OO. Seulement, lors du codage de mes classe d'intervalles, je me suis rendu compte que le ciblage posait quelques problèmes sur des noms de méhodes globales, renseignées dans le fichier toplevel.as ... C'est d'ailleurs pour cela qu'on retrouve des this.stop() dans ces classes.

En effet, si ma classe contient une méthode stop(), et que je l'appelle sans le this, il semble que ce soit la fonction globale qui soit appellée (en tout cas, pas celle de la classe) ... Pourtant, si je compare stop (sans ciblage) à this.stop, il me retourne bien une égalité ! 8O. Voyez plutôt :class TestStop {
        function TestStop() {
                trace("TestStop instance created");
                trace("--------------------");
        }
        function stop() {
                trace("stop method called");
        }
        function testScope() {
                stop();
                trace("Global stop ? " + (stop == _global.stop));
                trace("--------------------");
                stop.call();
                trace("Class' stop ? " + (stop == this.stop));
        }
}
/** Code de test */
var tst:TestStop = new TestStop();
tst.testScope();
/* Sortie
************
TestStop instance created
--------------------
Global stop ? false
--------------------
stop method called
Class' stop ? true
*/

Bizarre non ? :o