高阶函数

201 阅读1分钟

高阶函数:参数为函数或返回值为函数,满足其中一种即可

高阶函数解决的问题:可以将核心功能封装起来,不对他进行修改,AOP切片编程

// 异步编程  高阶函数:// 高阶函数
1)你可以将函数当做另一个函数的参数传入 
2) 如果一个函数 返回一个新的函数那么这个函数也是高阶函数
// 高阶函数的解决的问题// 核心功能,封装起来 不对他进行更改
// 装饰模式,AOP 切片Function.prototype.before = function(beforeFn){  
    //箭头函数没有this指向,会向上一层查找。没有arguments
    //剩余运算符 会将参数组合为数组
   return (...args)=>{    
     beforeFn();      
     this(...args);   // 将数组全部展开传入
   }
};
//创建核心业务
function say(...args){   
   console.log('说话 '+args); 
}
let newFn = say.before(()=>{  
  console.log('你好');
});
newFn(1,2,3);