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
这章着实没看懂哈哈哈哈