Performance JS des variables privées : un post qui compare sur tous les browsers les contre-performances des variables privées si elles sont déclarées comme suit :
var myClass= function() {
var privateVar = 1;
};
Comparé à l'absence de variable privée, en mettant tout dans le prototype :
var myClass = function() {
this._privateVar = 1;
};
myClass.prototype._privateVar = 1; // not private anymore ...
Le second est 10 fois plus rapide (merci prototype) mais n'autorise plus les variables privées. Je rajoute que j'ai constaté que si vous déclarez un Array dans le prototype, il est partagé entre toutes les instances de votre classe ...
Au final voici la méthode que j'utilise, moins lisible mais performante et qui permet d'avoir du private, du public et même du static :
(function () { // ouverture closure pour définir un scope
JUMBO.myClass = function() { // on se rattache à un objet global
this.publicVar = 1;
privateVar = 1;
};
// variables ou méthodes publiques
JUMBO.myClass.prototype = {
publicVar: 1;
};
// variables ou méthodes statiques (publiques et en accès direct sans passer par une instance)
JUMBO.myClass.staticVar = 1;
// variables ou méthodes vraiment privées
var self = JUMBO.myClass,
privateVar = 1;
})(); // fermeture closure et exécution du code
Les commentaires récents