コストのかかる関数の結果をメモ化するfunction factorial(n) { if (!factroial.cahche) { factroial.cache = { "0" : 1, "1" : 1 }; } if (!factorial.cache.hasOwnProperty(n)) { factorial.cache[n] = n * factorial(n - 1); } return factorial.cache[n]; } function memoizer(fundamental, cache) { cache = cache || {}; var shell = function (arg) { if (!cache.hasOwnProperty(arg)) { cache[arg] = fundamental(arg); } return cache[arg]; } return shell; } var memoized = memorizer(original, { "arg" : "value" }); 出典http://www.slideshare.net/nzakas/writing-efficient-javascript |
|