Pogrammation en Javascript

Programmation objet en javascript

Cette page explique brièvement comment programmer objet en JavaScript sans l'aide d'aucun framework.
Le code de l'exemple peut être téléchargé ici : HelloWorld.js

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

arobass