是什么
high order class, high order function
是一个参数是函数,返回值也是函数的函数
像不像绕口令?
有什么用
能不改变参数函数的情况下, 修饰参数函数,使其具备更多功能
function a(){
alert(1);
}
function b(fun){
return () => {
alert('我要开始输出1了');
fun();
}
}
const c = b(a)// 在下文中可以用c(),代替a()了
上述代码里, 有程序员写了一个函数a,现在他升官了, 不写代码了, 我要把函数a增加一个功能,就是每次输出前,提示用户,'我要开始输出了'
所以我们写一个函数b,把函数a传参进去, 返回新函数c,以后就可以不使用a,而使用c函数了,a函数完美升级,而且没有改a函数内部代码
进阶版高阶函数
class A{
method1(wrapper){
wrapper.before();
method2();
wrapper.after();
}
}
const a = new A();
a.method1({
before(){
console.log('开始');
},
after(){
console.log('结束')
}
})
需求,有一个类A,它有一个method2方法,现在应new过了, 我们希望method2执行前后输出开始和结束
所以我们不再使用method2,而是创建一个method1,把before和after函数传参给method1,method1内部执行method2,就实现了这个小需求