Appearance
高阶函数动态创建缓存代理
javascript
const mult = (...args) => {
let res = args[0]
for (let i = 1, l = args.length; i < l; i++) {
res *= args[i]
}
return res
}
const plus = (...args) => {
let res = args[0]
for (let i = 1, l = args.length; i < l; i++) {
res += args[i]
}
return res
}
const createProxyFactory = function (fn) {
const cache = {}
return function (...args) {
const key = args.join('|')
return cache[key] || (cache[key] = fn(...args))
}
}
const proxyMult = createProxyFactory(mult)
const proxyPlus = createProxyFactory(plus)
console.log(proxyMult(2, 3, 4))
console.log(proxyMult(2, 3, 4))
console.log(proxyPlus(2, 3, 4))
console.log(proxyPlus(2, 3, 4))