高阶函数:参数为函数或返回值为函数,满足其中一种即可
高阶函数解决的问题:可以将核心功能封装起来,不对他进行修改,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);