什么东西都是越学越难啊

z这章开头说JS给了很多便利给func,这一章我们就要学习,如何forward calls在他们之间,并decorate他们。

Transparent caching

当一个function被called的很频繁,我们就很像“记住”结果,避免再花时间去重新计算。

当然比起在func里面再增加func,我们会创造一个wrapper function,来增加caching。好处多多哦。

其实简单来说,被包裹的func还是做他自己的,只是多增加了一个caching的特点。

比起改写原func代码,有以下几个好处用decorator

1.可重复利用,其他的func也可以使用。

2.caching logic是与原func分开的,不会增加原func的复杂度。

3.我们可以同时使用多个decorators。

Using "func.call" for the context

缓存 “装饰”不适合,obj methods。

比如worker.slow=cachingDecorator(worker.slow)这样是会报错的。尤其是原func setting了this的。

就是用call来pass不同的obj作为“this”

》multi-argument

对于单argument来说,我们只用cache.set(x,result),但是对于多arguemnts我们就用两个arg结合成一个arg的方法,比如说将(max,min)转变成“max,min”。

func.apply

除了上面那个,我们也可以使用这个method。

func.apply(context,args)

将this设置成context,使用array-like obj args。

跟上面的那个唯一的区别就是call 接受一串args,而apply接受array-like objs。

所以当我们想要一个iterable就使用call,我们想使用array-like就使用apply。

把所有args以及context传到另一个function的做叫做forwarding(发送吧,这意思)。

Borrowing method

这章着实没看懂哈哈哈哈

你可能感兴趣的:(什么东西都是越学越难啊)