Skip to content

Instantly share code, notes, and snippets.

@jdrew1303
Forked from addyosmani/memoize.js
Last active August 29, 2015 14:22
Show Gist options
  • Save jdrew1303/8f399e0c51b888dc0fb1 to your computer and use it in GitHub Desktop.
Save jdrew1303/8f399e0c51b888dc0fb1 to your computer and use it in GitHub Desktop.
/*
* memoize.js
* by @philogb and @addyosmani
* further optimizations by @mathias
* Released under an MIT license.
*/
function memoize( fn ) {
return function () {
var args = Array.prototype.slice.call(arguments),
hash = "",
i = args.length;
toString = Object.prototype.toString,
callEm = toString.call({}),
currentArg=null;
while(i--){
currentArg = args[i];
hash += (callEm == toString.call(currentArg)) ?
JSON.stringify(currentArg) : currentArg;
fn.memoize || (fn.memoize || {});
//old: fn.memoize = fn.memoize || {};
}
return (hash in fn.memoize) ? fn.memoize[hash] :
fn.memoize[hash] = fn.apply( this , args );
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment