# 偏函数
# 概念
何为偏函数,也叫偏应用,一般我们封装的代码都是通用的
比如:我们有一个计算购买的物品,我们去购物,需要买一包烟,然后剩余的随便买一点。我们有这么一个函数。
function shop(a, b, c) {
return a + b + c;
}
函数有了,一包烟固定10元,其余两个是不固定的价格。 我们可以写的更偏应用一点
var shop2 = partial(shop, 10);
现在我们就可以使用 shop2 来直接填写不固定的值。
var result = shop2(20, 30);
result; // 60 我们最终的价格
例二
var ajax = (method, data, params) =>
var met = (a) => ajax(get, a, params);
我们可以看出来,偏函数就是将一个函数转换成参数不一样的函数, 更加偏向应用。
# ES6写法
var partial = (fn, ...args) => (...moreArgs) => fn(...args, ...moreArgs);
因为箭头函数没有 this, 最终找回了 partial 函数被调用的环境。
# ES5写法
function partial(fn) {
var args = [].slice.call(arguments, 1);
return function () {
fn.apply(this, args.concat([].slice.call(arguments)));
}
}