js函数聚合的三种实现方式

在这里插入图片描述

// 第一种:闭包存储,遍历执行
function compose1 (arr) {
  return (param) => {
    for (let fn of arr) {
      param = fn(param);
    }
    return param;
  }
}

// 第二种:递归嵌套,依次执行
function compose2 (arr) {
  return arr.length <= 1 ? arr[0] : (...args) => compose2(arr.slice(1))(arr[0](...args))
}

// 第三种:累加嵌套,依次执行,跟第二种相似
const compose3 = (arr) => arr.reduce((res, cur) => (...args) => cur(res(...args)));

function a (p) {
  return p + 1;
}
function b (p) {
  return p + 6;
}
function c (p) {
  return p * 2;
}

// 第四种:注意与第三章的区别
const compose4 = (arr) => arr.reduce((res, cur) => (...args) => res(cur(...args)));

const fn = compose4([a, b,c,d])
console.log(fn(1))

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

**聚合可以把类本身属性和方法聚合到目标类的成员本身或目标的原型对象上
聚合也可以类的原型对象上的方法【通常是方法】聚合到目标类的原型对象上。
类本身一般放属性,方法一般放在原型对象上。
**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值