Variable membre et réference
Par zemax, lundi 8 janvier 2007 à 23:05 :: Flash :: #128 :: rss
Encore une petite subtilité qui m'a fait arracher quelques cheveux cet après midi, et comme je suis pour la paix des cuirs chevelus, je vous la livre.
class Test {
public var tab1:Array;
public var tab2:Array = new Array();
function Test () {
this.tab1 = new Array()
}
}
Dans cette classe, j'ai 2 variables membres tab1 et tab2; la diffèrence étant que tab1 est instanciée dans le constructeur et tab2 dans la définition de la classe (c'est pratique parfois)
Et la mauvaise surprise c'est qu'instancié de la sorte, le tab2 de chaque instance est en réalité une réference à un tableau instancié dans la classe, commun à toutes les instances de la classe.
Avec ce test :
var a:Test = new Test();
a.tab1.push(1);
a.tab2.push(1);
var b:Test = new Test();
b.tab1.push(2);
b.tab2.push(2);
trace ("a.tab1: " + a.tab1);
trace ("a.tab2: " + a.tab2);
trace ("b.tab1: " + b.tab1);
trace ("b.tab2: " + b.tab2);
voilà ce qu'on obtient en sortie :
a.tab1: 1 a.tab2: 1,2 b.tab1: 2 b.tab2: 1,2
Attention donc quand on veut donner une valeur initiale à des variables membres de type Array ou Object...
Commentaires
1. Le mardi 9 janvier 2007 à 10:43, par LAlex
2. Le mardi 9 janvier 2007 à 12:37, par zemax
3. Le mardi 9 janvier 2007 à 13:48, par Foxy
4. Le mercredi 10 janvier 2007 à 18:33, par LAlex
5. Le mercredi 10 janvier 2007 à 19:56, par Foxy
Ajouter un commentaire