javascript高阶函数

53 阅读1分钟

什么是高阶函数

  • 一个函数的参数是一个函数(回调函数)
  • 一个函数的返回值是一个函数
function fn1(foo){
    foo()
}
fn1(()=>{})

function fn2(){
    return function(){}
}

高阶函数的运用

  • 在执行一个方法之前或之后我们还需要做一些其他的事情或者执行一些其他的方法
function fn(a,b,c){
    console.log(a,b,c)
    console.log('核心逻辑')
}

//fn.before = function (beforeFn) {
//    return  (...args)=> {
//        beforeFn()
//        this(...args)
//    }
//}

//将before函数挂在刀Function原型链上
Function.prototype.before = function (beforeFn) {
    return  (...args)=> {	//args收集所有参数
        beforeFn()
        this(...args)	//this指向fn(谁调用指向谁)
    }
}

const newFn = fn.before(()=>{
    console.log('核心逻辑之前的逻辑')
})
newFn(1,2,3)		//核心逻辑之前的逻辑		核心逻辑