Javascript : un langage incompris - Méthode static / d'instance
Je continue dans mes exemples d'utilisation de javascript, vous pouvez retrouvez les autres ici : http://blogs.developpeur.org/cyril/archive/category/1037.aspx
Voici comment faire des méthodes static et des méthodes d’instance.
// Classe Personne
var Personne = function(prenom, nom)
{
this.prenom = prenom;
this.nom = nom;
}
// Méthode d'instance
Personne.prototype.toString = function()
{
return 'je suis ' + this.prenom + ' ' + this.nom;
}
// Méthode static
Personne.toString = function()
{
return 'je ne suis pas une instance d\'un objet';
}
// Appel de la méthode static
alert(Personne.toString());
// Instanciation d'un nouvel objet
var _Cyril = new Personne('Cyril', 'Durand');
alert(_Cyril.toString());
Dans cet exemple on a toujours notre classe personne avec ses propriétés prenom et nom, il y a aussi la méthode toString que j’ai rajouté avec le mot clé prototype (voir
la méthode précédente) et on peut voir une autre méthode toString qui cette fois n’a pas le mot clé prototype, celle-ci est donc accessible directement à partir de l’objet, c’est une méthode static.
De la même façon on peut rajouter / surcharger des méthodes / propriétés à des instances d’objet :
// Classe Personne
var Personne = function(prenom, nom)
{
this.prenom = prenom;
this.nom = nom;
}
// Méthode d'instance
Personne.prototype.toString = function()
{
return 'je suis ' + this.prenom + ' ' + this.nom;
}
// Méthode static
Personne.toString = function()
{
return 'je ne suis pas une instance d\'un objet';
}
alert(Personne.toString());
// Instanciation d'un nouvel objet
var _Cyril = new Personne('Cyril', 'Durand');
// On rajoute une propriété à l'instance de l'objet
_Cyril.age = 19;
// On rédéfinit une méthode d'une instance de l'objet
_Cyril.toString = function()
{
return 'je suis ' + this.prenom + ' ' + this.nom + ' et j\'ai ' + this.age + ' ans';
}
alert(_Cyril.toString());
Ce qu’il faut donc retenir, c’est que le mot clé prototype permet de rajouter des méthodes à l’objet alors que sans ce mot clé, on peut rajouter des méthodes directement à une instance d’un objet ou alors faire une méthode static.
Comme d'habitude une version PDF avec la couleur est dispo ici : http://www.cyrildurand.net/divers/articles/javascript/instancevsstatic.pdf