8
votes

AS3: Utilisation de ce mot clé

Je me demande simplement quand il est nécessaire d'utiliser le mot-clé this.somevar au lieu de onevar .

Je n'utilise généralement pas cela dans les circonstances suivantes:

  1. J'ai fait un Var privé pour une classe
  2. Je me réfère à cela afin de l'utiliser comme Var local pour cette classe

    correct? ou n'est-ce pas juste une chose de style?


0 commentaires

5 Réponses :


3
votes

Si vous utilisez cela dans un objet, cela se référera à l'objet lui-même. Voici un exemple où vous l'utiliseriez:

package
{
    public class foo
    {
        private var variable:uint;

        public function foo(variable:uint)
        {
            this.variable = variable;
        }
    }
}


1 commentaires

Je disais que je pense que cela se produit de toute façon. Voir le commentaire ci-dessous; Je l'ai trouvé utile. Merci!



9
votes

Vous devez généralement utiliser cela.varname si vous êtes à l'intérieur d'une fonction comportant un paramètre avec le même nom et que vous souhaitez faire référence à la variable de membre. Si le membre var est ou non privé n'a aucun effet sur la nécessité d'utiliser «cela».


0 commentaires

4
votes

Comme cela a déjà été mentionné, vous n'avez pas besoin d'utiliser ce em> dans un cas très simple, où vous souhaitez vous référer à une variable de membre de la classe à partir d'une méthode de membre de classe, par exemple:

package
{
  /* ... imports ... */

  public class MyClass extends Sprite
  {
     private var _mc : MovieClip;

     public function tweenSomething() : void
     {
       var tween : Object = {
         x: 0,
         time: 1, 
         onComplete: function() : void {
           // Here, "this" will not refer to the instance
           // of MyClass, but rather to the _mc MovieClip,
           // which is the object being tweened below.
           this.visible = false;
         }
       };

       Tweener.addTween(_mc, tween);
     }
  }
}


3 commentaires

Merci d'entrer dans les détails de cela. J'apprécie les clarifications.


Hmm, je ne comprends pas pourquoi dans le tweener exemple. se réfère à la MovieClip.


@RICHARDS, c'est parce que l'appelant (à l'intérieur Tweener) a spécifié la cible Tween pour être en référence par la variable "Cette" variable. Voir la documentation sur la fonction.apply (). À votre santé



0
votes

Que diriez-vous de commencer à utiliser Ce mot-clé , tout d'abord, car il vous aide à reconnaître rapidement si la variable locale ou globale (méthode ou classe détenue) dans le code. Tout ce dont vous avez besoin d'un morceau du code où vous pouvez voir ceci , puis réalisez immédiatement qu'il s'agit d'une variable de classe visible globalement, au lieu de défilement supplémentaire pour la définition cible.


0 commentaires

2
votes

Quelque chose à ajouter aux autres réponses: Dans ActionScript 3, vous pouvez référencer les variables de membre et les fonctions de deux manières:

this["var"] = 5; // the this keyword is good for something after all!
this["func"]();  // " " " " " " " " "


0 commentaires