lundi 1 décembre 2014

String.prototype : un cas pratique !


Nous connaissons tous la fonction Javascript replace().

Cette fonction permet de remplacer certains caractères dans une chaine de caractères.

Exemple :

var str = "Bonjour Mr DUPOND !";
var res = str.replace("DUPOND""DURAND");

Nous pouvons d'ailleurs utiliser les expressions régulières dans cette fonction.

var str = "Bonjour Mr DUPOND !";
var res = str.replace(new RegExp("o", "g")"p");

Dans cet exemple nous remplacons tous les "o" de la chaine de caractères par des "p".

Mais imaginons que vous deviez utiliser un certain nombre de fois cette fonction, il peut être intéressant de "simplifier" l'écriture du code.

Au lieu d'écrire :

var res = str.replace(new RegExp("o", "g")"p");

si nous écrivions :

var res = str.replaceAll("o""p");

Cette fonction n'existe pas pour l'objet String : il faut donc la créer et faire en sorte que cela soit applicable à tous les objets String.

Pour information, toutes les instances de String héritent de String.prototype. Les modifications de l'objet prototype String sont donc répercutées sur toutes les instances de String.

Si nous écrivons :

String.prototype.replaceAll = function(find, replace) {
var str = this;
return str.replace(new RegExp(find, 'g'), replace);

};

<this> représente l'objet String courant.

Nous avons notre fonction opérationnelle pour tous les objets String.

Evidemment cette fonction "prototype" doit être déclarée dans la partie Javascript de votre code.

Aucun commentaire:

Enregistrer un commentaire