Effectivement on peut créer des variables de classe et des méthodes de classe. Mais comme le javascript est un language de prototypage, on ne parle pas vraiment de classe et méthode comme on le fait en Java ou C++. Et on ne l'implément pas de la même façon, disont que c'est plus un Hack qu'autre chose.
Il faut d'abord comprendre comment marche le prototypage:
pour chaque classe, on a un objet spécial, dit le prototype, qui est contruit à la déclaration de la fonction et qui va être cloné dès qu'on fera un NEW. Ce qui est intéressant dans notre exemple, c'est que tant qu'on ne touche pas à un attribut d'une instance en écriture, alors la valeur de l'attribut est celle du prototype. Et c'est avec cette propriété qu'il devient très facile de créer des variables de classe. Passons à la pratique:
Code :
- MyClass = function() {
- this.add = function() {
- MyClass.prototype.tbl_obj.push(this);
- }
- this.incrementInstanceNumber = function() {
- MyClass.prototype.instanceNumber++;
- }
- }
- MyClass.prototype.tbl_obj = new Array();
- MyClass.prototype.instanceNumber = 0;
- var myFirstInstance = new MyClass();
- alert(myFirstInstance.instanceNumber); //show 1
- var mySecondInstance = new MyClass();
- alert(myFirstInstance.instanceNumber); //show 2
- alert(myFirstInstance.tbl_obj.length); //show 2
|