: javascript

Etendre des objets

En javascript il est possible d'ajouter des fonctionnalités à des objets (les vôtres ou ceux qui sont existants), Sur certains navigateurs il est aussi possible d'étendre les objets du DOM.

Pour étendre un objet on ajoute une fonction à son prototype, par exemple on peut étendre l'objet String avec une fonctionnalité qui permettrait de compter certains caractères.

String.prototype.countChars = function(c) {
  var cpt = 0;
  for(var i=0;i<this.length;i++) {
    if(this.charAt(i)==c) cpt++;
  }
  return cpt;
}

var t = "Je suis un texte";
alert(t.countChars(' ')); // affiche 3

Particularité d'un langage à prototypes

Dans le code suivant on déclare un objet puis on crée deux instances a et b. Ensuite on ajoute une propriété au prototype de l'objet Test. Cette nouvelle caractéristique est disponible pour toutes instances (déjà crées ou pas encore crées).

function Test() { // crée un objet Test
  this.abc = 444; // initialise une propriété
}

var a = new Test(); // crée une instance
var b = new Test(); // crée une instance
Test.prototype.toto = 12; // ajoute un propriété au prototype
a.titi = 4; // modifie une propriété de l'instance a

alert(a.toto); // affiche 12
alert(a.titi); // affiche 4
alert(b.toto); // affiche 12
alert(b.titi); // affiche undefined

On observera que le fait d'affecter une propriété quelconque à une instance (ici a.titi = 4) n'affecte que l'instance a et non le prototype de l'objet Test.

Editer