1.概念
一個函數(shù)的參數(shù)是一個函數(shù)(回調(diào)函數(shù))或者一個函數(shù)返回一個函數(shù)(函數(shù)柯里化)
2.例子
寫代碼時不破壞原有邏輯,而增加一些功能
對函數(shù)進(jìn)行包裝(裝飾),切片編程(核心抽離出來),包裝上自己的內(nèi)容 切片AOP
const say = (...args)=>{
//...args 剩余運(yùn)算符 可以將參數(shù)轉(zhuǎn)換成一個數(shù)組。兩個作用 剩余運(yùn)算符,展開運(yùn)算符
// todo...
console.log('說話', args)
}
// 希望在say之前做些事
//只有say函數(shù)之前
//say.before = function () => {
//}
// 所有函數(shù)都擴(kuò)展一些功能
Function.prototype.before = function (cb) => {
return (...args) => { //箭頭函數(shù)沒有this指向,所以函數(shù)中this指的是say。如果用function的話,this指的是window
cb();
this(...args) //apply 可以依次將數(shù)組傳入
}
}
let newSay = say.before(function(){
console.log('before say')
})
newSay('a','b','c');