Programmation objet en JavaScript

Cet article est ancien, le langage JavaScript a évolué — il est désormais possible de programmer en objet bien plus simplement avec la syntaxe class, proche de celle de Java.

Cette page explique brièvement comment programmer en orienté 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 préfixent les attributs par le caractère « _ » pour préciser qu'il s'agit d'un attribut privé.

III – Les méthodes

Les méthodes de classe

Pour créer des méthodes de classe (statiques), 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 + " ]"; }