Le Blog du Geek Joyeux

Plus moins vite tu codes, moins plus vite ça plante

Surcharge de méthode élégante en Javascript

Publié le 28 avril 2010 à 10:23 - Quick Tips

Aujourd’hui, j’ai eu besoin de surcharger une méthode Javascript. Premier réflexe, réécrire la fonction en y ajoutant le code voulu.

Soit le code qui suit :

mon_objet.fait_le_café = function() {
var tasse = prendre_une_tasse();
tasse.verser_café();
tasse.faire_chauffer();

return tasse;
}

Afin d’ajouter du sucre, on pourrait surcharger de la façon suivante :

mon_objet.fait_le_café = function() {
var tasse = prendre_une_tasse();
tasse.verser_café();
tasse.faire_chauffer();

tasse.ajouter_sucre();

return tasse;
}

Jusque là, rien d’inhabituel. Mais quid du code propre, simple et surtout DRY ?

Voici donc une façon plus élégante d’obtenir le même résultat en écrivant juste le code nécessaire :

mon_objet.fait_le_café_sans_sucre = mon_objet.fait_le_café;

mon_objet.fait_le_café = function() {
var tasse = mon_objet.fait_le_café_sans_sucre();

tasse.ajouter_sucre();

return tasse;
}

C’est tout simple, ça fonctionne et c’est DRY

Pour information, l’idée m’est venue du framework Ruby On Rails (en) et de sa méthode

alias_method_chain (en)

Dernière mise à jour : 25/08/2011 15:02