posted on mercredi 29 décembre 2004 14:45 par jbe

Fonctions anonymes, Pointeurs de fonctions, Closures, JavaScript

Etant donné l'actualité mouvementée, un petit post pour se reveiller.

J'ai mis à jour ma petite librairie JavaScript, toujours disponible ici.
Les petites nouveautés, c'est des petites fonctions inspirées du monde ruby, qui permettent de travailler avec ce que l'on pourrait appeller des closures. Un petit exemple :

var ppj = new Array("Pierre", "Paul", "Jacques");
ppj.each(function(elem) {
    document.write(elem + "<br />");
});

Très simple à implémenter en JavaScript cette fonction each, surtout quand on sait qu'en JavaScript une fonction est un type comme un autre :

/**
* Appelle une fonction pour chaque element
* du tableau
*/
Array.prototype.each = function(functor) {
    for (var i = 0 ; i < this.length ; i++) {
        functor(this[i]);
    }
}

Franchement, c'est classe non ? Si on a besoin de travailler impérativement avec les index, on peut utiliser cette fonction :

var ppj = new Array("Pierre", "Paul", "Jacques");
ppj.eachWithIndex(function(elem, i) {
    document.write("at " + i + " : " + elem + "<br />");
});

Bien pratique, j'ai rajouté cette fonctionnalité sur ma Hashtable, du coup, ça donne ça :

var ht = new Hashtable();
ht.put("jbe", 21);
ht.put("pvb", 24); // et toujours pas marié

ht.each(function(key, value) {
    document.write(key + " is " + value + "<br />");
});

Alors, qui a dit que le JavaScript était un "sous" langage. C'est d'autant plus appréciable qu'on le retrouve un petit peu partout, bref, comment professionaliser le développement XUL par exemple hein ?

Comments

# re: Fonctions anonymes, Pointeurs de fonctions, Closures, JavaScript

jeudi 30 décembre 2004 10:56 by TImaniac
Tu parles du JavaScript made in Microsoft là, je suis pas sûr que tu es toutes ces possibilités dans le JavaScript officiel de XUL ;-)

# re: Fonctions anonymes, Pointeurs de fonctions, Closures, JavaScript

jeudi 30 décembre 2004 11:22 by Jb Evain
Si j'en parle c'est que j'ai quand même essayé hein...

Et n'utilisant que Firefox, ça m'aurait décu que mon code ne marche pas. C'est du JavaScript tout ce qu'il y a de plus standard.

# re: Fonctions anonymes, Pointeurs de fonctions, Closures, JavaScript

jeudi 30 décembre 2004 22:41 by TImaniac
Ah bah j'ai rien dis alors :-)
C'est puissant je JScript, je savais pas :-)

# re: Fonctions anonymes, Pointeurs de fonctions, Closures, JavaScript

mercredi 12 janvier 2005 18:01 by LaBilbe
C magnifique j'ai pas d'autre mot...