Object Poo gestion ! Conseil

Résolu
balvick Messages postés 36 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 31 mars 2009 - 24 mars 2009 à 14:22
balvick Messages postés 36 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 31 mars 2009 - 31 mars 2009 à 14:27
Bonjour,
je poste pas souvent car je trouve souvent la solution avec mon ami google, mais la pas moyen de retrouvé la source de ce programme.

je souhaite faire un objet perso.
(je sais qu'on peut le faire en class, mais j'aimerai avec d'autres info sur se que j'ai commencé)

Voici mon code :

Perso = {
nom = "Bill",
Age = 19,
init : function (new_nom,new_age) {
this.nom=new_nom;
this.age=new_age;
}
}

Perso1 = perso;
trace(perso1.nom); // = Bill
Perso2 = perso;
Perso2.init("stan",11);
trace(perso1.nom); // = stan ( POURQUOI !!!)

je redemande les information du perso1 mais il me donne les derniers info que j'ai rentré.
j'ai du mal a comprendre cette "objet"
Perso1= new perso; // Ne fonctionne pas.

si un personne peut m'aider a comprendre comment faire une copie de cette objet et quelle type d'objet est-ce la ?

Merci

2 réponses

cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
31 mars 2009 à 14:20
Salut,

ton probleme est la : Perso2 = perso les objets sont passés par référence... Perso1 et Perso2 pointent vers le même objet... Perso{}
la solution est toute simple... passe par une class Perso et instancie un nouveau Perso pour chaque objet que tu veux.

Sinon il te faudra 'cloner' ton objet et cela risque d'etre assez fastidieux...
Perso { nom "Bill", Age = 19, init : function (new_nom,new_age) { this.nom=new_nom; this.age=new_age; } }
Perso1={}
Perso1.nom=Perso.nom
Perso1.Age=Perso.Age
Perso1.init=Perso.init
Perso2={}
Perso2.nom=Perso.nom

Perso2.Age=Perso.Age

Perso2.init=Perso.init

Perso2.init("stan",11)

La, ca devrait marcher...

sinon utilise une petite fonction

function createPerso(_nom:String,_age:Number):Object{
   var perso:Object={}
   perso.nom=_nom
   perso.Age=_age
  return perso
}

var Perso1=createPerso('Bill',19)
var Perso2=createPerso('Stan',11)

@+
3
balvick Messages postés 36 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 31 mars 2009
31 mars 2009 à 14:27
Wow merci pour ta reponse,
et desolé pour la mise en page de ma question
( edition impossible !)

okay je voir que la solution de clonage etait pas simple non plus car malheureusement j'ai 10 functions dans ma class apres les infos des perso.

au final j'ai fini par faire une jolie class perso.as ^^

merci pour t'es infos.
0
Rejoignez-nous