浅聊偏函数
什么是偏函数?
首先我们知道,这是一个函数:
这是另外一个函数:
ajaxTest1
函数相比 ajax
函数,少传了一个参数,它的 url 被固定到了 ajaxTest1
的函数体内;
同理,我们还可以写出 ajaxTest2、ajaxTest3、……、ajaxTestN
如果我们直接写:
这样有问题吗?
从“能用就行”的角度看,是可以的;如果是从“设计模式”的角度看,就不太 ok 了!
因为这样写,都没有复用到 ajax 函数呀 😂
基于这种背景,偏函数应用应用而生!
它做了什么?—— 用一个函数封装 ajax 函数,使得封装后的函数 能够先绑定部分参数, 这个封装后的函数就是偏函数;
比方说:
我们用 partial
函数封装了 ajax
函数,然后先绑定了 url 为 'http://www.test.com/test2',封装后的 ajaxTest2
就是偏函数,是函数 ajax
的偏函数;
调用方式不变:
这样做的好处就是,我们复用了 ajax,并且封装后的偏函数,需要的传参更少了,这一点十分关键;老观众都知道:在函数式编程中我们提倡:函数的输入和输出,都尽量保持只有 1 个是最佳的。
那么,现在的问题就来了,partial
这个用于封装的函数怎么实现的呢??
和前面提到过的柯里化很像,partial
的目的就是收集参数,然后传给回调函数,它是这样的:
这就是基础的偏函数理解。
实际上,针对不同的削减参数的需求,偏函数有不同的写法;但是原理是不变的:
对原始函数二次封装,固定部分参数,返回回调函数,只需要传入更少的参数~~
OK,以上便是本篇分享。点赞关注评论,为好文助力👍
我是掘金安东尼 🤠 100 万阅读量人气前端技术博主 💥 INFP 写作人格坚持 1000 日更文 ✍ 陪你一起度过漫长岁月 🌏
版权声明: 本文为 InfoQ 作者【掘金安东尼】的原创文章。
原文链接:【http://xie.infoq.cn/article/0fa59101f0db63455255c1e3b】。文章转载请联系作者。
评论