Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/07/2011, 14h54   #1
Membre habitué
 
Homme
Étudiant
Inscription : mai 2011
Messages : 226
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 226
Points : 126
Points : 126
Par défaut javascript OO : accesseurs

Bonjour,

J'aimerais utiliser des getters et des setters en javascript. J'ai écris :

Code :
1
2
3
4
5
6
7
var MaClass = function() {
    this.attribut;
}
MaClass.prototype = {
    getAttribut: function() {return this.attribut;},
    setAttribut: function(value) {this.attribut = value;}
}
Jusqu'ici, tout va bien. Ca marche impeccable. Le problème vient quand l'un des attribut est aussi l'objet d'une classe :

Code :
1
2
3
4
5
6
7
8
9
10
var MaClass = function() {
    this.attribut = new Element();
}
MaClass.prototype = {...}
 
var Element = function() {this.core = "truc";}
Element.prototype = {
    getCore: function() {return this.core;},
    setCore: function(value) {this.core = value;}
}
dans ce cas, regardez le code suivant :

Code :
1
2
3
4
5
6
var objet1 = new MaClass;
 
objet1.getAttribut().setCore("bidule");
 
alert(objet1.getAttribut().getCore();}
//alert : truc
Evidemment, ce n'est pas ce qui était attendu.
Il existe bien une solution naïve pour régler le problème :
Code :
objet1.setAttribut(objet1.getAttribut().setCore());
Vous vous doutez bien que ce n'est pas satisfaisant, surtout que plus on va ajouter des niveaux, plus ça deviendra intenable. Imaginez que "core" soit aussi un objet !

Question : existe-t-il un autre moyen de régler ce problème?
Sharcoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 15h39   #2
Membre expérimenté
 
Duke Jikel
Inscription : mai 2010
Messages : 340
Détails du profil
Informations personnelles :
Nom : Duke Jikel

Informations forums :
Inscription : mai 2010
Messages : 340
Points : 548
Points : 548
J'ai testé ton code, ça marche très bien
http://jsfiddle.net/Cyf36/

Je ne vois pas le problème
dukej est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 15h44   #3
Membre habitué
 
Homme
Étudiant
Inscription : mai 2011
Messages : 226
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 226
Points : 126
Points : 126
... C'est un fait...
Je comprends plus rien...

Bon, ben merci pour ta réponse, je vais me replonger dans le code pour comprendre pourquoi j'ai pas le même résultat.
Sharcoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 15h49   #4
Membre habitué
 
Homme
Étudiant
Inscription : mai 2011
Messages : 226
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 226
Points : 126
Points : 126
Désolé ! Ca me faisait ça parce que le getter et le setter de ma classe utilisaient le localStorage !

Code :
getTruc = function() {localStorage.getItem("truc");}
c'est sûr que je risque pas d'observer un changement si je fais pas un setTruc derrière !


Merci encore. J'aurais au moins découvert jsFiddle, ça a l'air bien foutu
Sharcoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h31.


 
 
 
 
Partenaires

Hébergement Web