var MyClass = function() {
var x = 1;
this.setX = function(t) { x = t; };
this.getX = function() { return x; };
};
var a = new MyClass;
a.setX(2); // a.getX() retourne 2
var b = new MyClass;
b.getX(); // b.getX() retourne 1
a.x; // erreur, x n'est pas un attribut public de MyClass.
Principe: créer une fonction constructeur avec des variables privée à portée réduite (var) et ajoutés des méthodes qui utilisent ces variables.
Émuler un attribut statique privé
(static private attribute)
var MyClass = (function() {
var x = 2;
/** MyClass constructor */
return function() {
this.setX = function(t) { x = t; };
this.getX = function() { return x; };
};
})();
var a = new MyClass;
a.setX(1);
var b = new MyClass;
b.getX();
Principe: créer une fonction avec des variables statiques privée communes à une fonction constructeur d'objet. La fonction retourne un constructeur et l'exécute dès la création. Le constructeur retourné possède des méthodes qui utilisent ces variables.
Source pour l'attribut privé statique: Federico Lebrón sur irc.freenode.org/##javascript - 2010-01-18.