Émuler un attribut privé

(private attribute)

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.