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