//définition du cache var cache = function(){ var cache = {}; return function(f){ return function(){ var key = f.name+'('+Array.prototype.join.call(arguments, ',')+')'; console.debug(key, cache); if(key in cache){ return cache[key]; }else{ return cache[key] = f.apply(null, arguments); } } } }(); //définition d'une fonction test var square = function square(x){ document.write('square('+x+') est appelé'); return x*x; } //appel avec le cache cache(square)(2); //affiche square(2) est appelé cache(square)(2); //n'affiche rien => la fonction est bien mise en cache. cache(square)(3); //affiche square(3) est appelé document.write(cache(square)(2)); //affiche 4 => c'est bien la bonne valeur qui est retournée.