Programmation objet en JavaScript

Publié le 23 mars 2011 par Thierry LEROY

Cet article est ancien, le langage javascript a évolué, il est désormais possible de programmer en objet bien plus simplement. La syntaxe est proche de celle de Java.

Cette page explique brièvement comment programmer objet en JavaScript sans l’aide d’aucun framework.

I – Créer une classe

Pour créer une classe par exemple « HelloWorld ». Il suffit de créer une fonction « HelloWorld » :

function HelloWorld(){ }

Pour créer une instance de cette classe, il suffit d’utiliser l’opérateur « new » :

var helloWorld=new HelloWorld();

II – Les attributs

Il n’est pas nécessaire de déclarer les attributs.
/!\ : Il faut toujours utiliser le mot clef ‘this’ pour accéder aux propriétés de l’objet.

function HelloWorld(firstname, lastname){ this.setFirstname(firstname); this.setLastname(lastname); } HelloWorld.prototype=new Object(); HelloWorld.prototype.getFirstname = function() { return this.firstname; }; HelloWorld.prototype.setFirstname = function(firstname) { this.firstname = firstname; }; HelloWorld.prototype.getLastname = function() { return this.lastname; }; HelloWorld.prototype.setLastname = function(lastname) { this.lastname = lastname; };


NB : certaines personnes prefixent les attributs par le caractère ‘_’ pour préciser qu’il sagit d’un attribut privé.

III – Les méthodes

Les méthodes de classe

Pour créer des méthodes de classe (statique), il suffit d’ajouter directement une fonction à la fonction « HelloWorld » :

HelloWorld.sayHelloStatic = function(firstname,lastname){ return "Hello " + firstname + " " + lastname; }

Les méthodes d’instance

Pour créer des méthodes d’instance (non statiques), il faut ajouter une fonction, non pas à la fonction « HelloWorld », mais à l’attribut « prototype » de la fonction « HelloWorld » :

HelloWorld.prototype.sayHello = function(){ return "Hello " + this.getFirstname() + " " + this.getLastname(); };

IV – Héritage

Pour créer une classe « BonjourToutLeMonde » qui hérite de la classe « HelloWorld », il faut associer un objet « HelloWorld » au prototype de la classe « BonjourToutLeMonde ».
Pour appeler le constructeur de la classe mère il faut utiliser la méthode « call » de la fonction parente :

function BonjourToutLeMonde(firstname, lastname) { HelloWorld.call(this, firstname, lastname); } BonjourToutLeMonde.prototype = new HelloWorld();

V – La méthode toString()

Comme en java il existe une méthode toString :

HelloWorld.prototype.toString = function(){ return "HelloWorld[ "+this.firstname+", "+this.lastname+" ]"; }

A – Test