Mouais, pour quelqu'un qui maitrise "très bien" le modèle objet de javascript, tu devrais tester ton code avant de nous le montrer, histoire qu'on apperenne pas des bêtises
déjà ta fonction setAttribut1 traffique self.attribut et non pas self.attribut1. Ensuite tu définis ta variable dans la fonction Foo,donc quand tu en modifies ensuite le prototype, tu n'est plus dans le même scope. La variable self que tu modifies est l'objet window, précisément window.self qui référence window
var Foo = function() {
this.attribut1 = 0;
this.attribut2 = "texte";
var self = this; // conservation du contexte
return Foo.prototype;
};
Foo.prototype = {
method1: function() { alert('method1 ok'); },
getAttribut1: function() { return self.attribut; },
setAttribut1: function(value) { self.attribut = value; }
};
var bar = new Foo();
//bar.method1(); // renvoie method1 ok
bar.setAttribut1(1234); // met bar.attribut1 à 1234 => NON !
alert(attribut);
alert(window.attribut);
déjà ta fonction setAttribut1 traffique self.attribut et non pas self.attribut1. Ensuite tu définis ta variable dans la fonction Foo,donc quand tu en modifies ensuite le prototype, tu n'est plus dans le même scope. La variable self que tu modifies est l'objet window, précisément window.self qui référence window