JavaScript 装饰器和转发

装饰器模式

装饰器是一个特殊的函数,它接受一个函数作为参数,并改变它的行为。

它非常重要和普遍的一种应用就是缓存函数返回结果,节省重复计算的时间。

1
2
3
4
5
6
7
8
9
10
11
12
function cacheDecorator(fun) {
const cache = new Map();
return function(x) {
// 如果命中缓存,则直接返回缓存中的计算好的值
if (cache.has(x)) return cache.get(x);
// 如果没有命中缓存,则使用传入的函数重新计算结果
const result = fun(x);
// 将新的结果进行缓存
cache.set(x, result);
return result;
}
}

callapply 都允许显式地设置调用函数执行时的上下文(即 this 值),在作用上它们几乎相同。

不同的是 call 以参数列表的形式接收参数,而 apply 以类数组的形式接收参数。

作者

Y2hlbmdsZWk=

发布于

2019-03-09

更新于

2021-09-01

许可协议