1.概念
一个函数的参数是一个函数(回调函数)或者一个函数返回一个函数(函数柯里化)
2.例子
写代码时不破坏原有逻辑,而增加一些功能
对函数进行包装(装饰),切片编程(核心抽离出来),包装上自己的内容 切片AOP
const say = (...args)=>{
//...args 剩余运算符 可以将参数转换成一个数组。两个作用 剩余运算符,展开运算符
// todo...
console.log('说话', args)
}
// 希望在say之前做些事
//只有say函数之前
//say.before = function () => {
//}
// 所有函数都扩展一些功能
Function.prototype.before = function (cb) => {
return (...args) => { //箭头函数没有this指向,所以函数中this指的是say。如果用function的话,this指的是window
cb();
this(...args) //apply 可以依次将数组传入
}
}
let newSay = say.before(function(){
console.log('before say')
})
newSay('a','b','c');