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?