Bonjour,
J'aimerais utiliser des getters et des setters en javascript. J'ai écris :
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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;} }
dans ce cas, regardez le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;} }
Evidemment, ce n'est pas ce qui était attendu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 var objet1 = new MaClass; objet1.getAttribut().setCore("bidule"); alert(objet1.getAttribut().getCore();} //alert : truc
Il existe bien une solution naïve pour régler le problème :
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 !
Code : Sélectionner tout - Visualiser dans une fenêtre à part objet1.setAttribut(objet1.getAttribut().setCore());
Question : existe-t-il un autre moyen de régler ce problème?
Partager