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+" ]";
}