memoize - 返回 memoized(缓存的)函数
优质
小牛编辑
123浏览
2023-12-01
返回 memoized(缓存的)函数。
使用 Object.create(null)
创建一个没有 Object.prototype
的空对象(这样如果输入值类似 'hasOwnProperty'
,那么这些属性就不会被解析)。 通过首先检查该特定输入值的函数输出是否已经被缓存,如果没有,则返回一个函数,该函数将作为单个参数提供给 memoized 函数。
const memoize = fn => { const cache = new Map(); const cached = function(val) { return cache.has(val) ? cache.get(val) : cache.set(val, fn.call(this, val)) && cache.get(val); }; cached.cache = cache; return cached; };
// See the `anagrams` snippet. const anagramsCached = memoize(anagrams); anagramsCached('javascript'); // takes a long time anagramsCached('javascript'); // returns virtually instantly since it's now cached console.log(anagramsCached.cache); // The cached anagrams map