variable et méthode "de classe" en Javascript ...

variable et méthode "de classe" en Javascript ... - HTML/CSS - Programmation

Marsh Posté le 08-12-2005 à 17:48:44    

j'ai lu, un peu expérimenté et cru comprendre que l'on pouvait créer des variables et méthodes de classe en javascript...
 
les méthodes de classe semblent pouvoir se créer dans un prototype ou dans le corps du contructeur de la classe. les variables de classe sont apparemment à déclarer dans le corps du constructeur (oui ?).
 
L'accessibilité aux variables de classe semble déjà plus complexe. il semble qu'il faille créer des méthodes 'privilégiées' mais qui elles sont des méthodes d'instance (???) ... je suis un peu perdu ...
 
Je voudrais faire une chose assez basique (enfin ... qui me semblait facile pour le peu que j'ai pu expérimenter en JAVA (tout court)) : à chaque NEW je voudrais comptabiliser le nombre d'instances créees (dans une "variable de classe" ) et éventuellement me dresser un tableau de pointeurs vers chacun de mes objets ...
 
Quelqu'un peut-il me dire si cela est trivial ? (et éventuellement m'aiguiller vers de bonnes ressources car je ne trouve pas grand chose ...)
 
Un petit exemple ?  
 
Merci de votre aide ....

Reply

Marsh Posté le 08-12-2005 à 17:48:44   

Reply

Marsh Posté le 08-12-2005 à 18:00:25    

http://www.litotes.demon.co.uk/js_ [...] tatic.html


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 14-12-2005 à 16:15:44    

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 :
  1. MyClass = function() {
  2.   this.add = function() {
  3.     MyClass.prototype.tbl_obj.push(this);
  4.   }
  5.   this.incrementInstanceNumber = function() {
  6.     MyClass.prototype.instanceNumber++;
  7.   }
  8. }
  9. MyClass.prototype.tbl_obj = new Array();
  10. MyClass.prototype.instanceNumber = 0;
  11. var myFirstInstance = new MyClass();
  12. alert(myFirstInstance.instanceNumber); //show 1
  13. var mySecondInstance = new MyClass();
  14. alert(myFirstInstance.instanceNumber); //show 2
  15. alert(myFirstInstance.tbl_obj.length); //show 2

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed