高阶函数
一个函数的参数是一个函数(回调)
一个函数返回一个函数(拆分函数)
//箭头函数中没有this指向会向上级作用域查找
//没有arguments
Function.protptype.before = function(beforeFn){
return (...args)=>{
beforeFn();
this(...args);
}
}
//AOP 切片 装饰 把核心抽离出来 在核心的基础啊上增加功能
const say = (...args)=>{
console.log('说话',args)
}
const newSay = say.before(()=>{
console.log('nihao')
})
newSay(1,2,3)
//输出
nihao
说话 [1,2,3]
事务
开始的的时候做某件事 结束的时候做某件事
const perform = (anymethod,wrappers)=> {
wrappers.foeEach(wrap=>{
wrap.initilizae();
})
anymethod();
wrappers.forEach(wrap=>{
wrap.close()
})
}
perform(()=>{
console.log('说话')
},[
{
initilizae(){
console.log('您好')
},
close(){
console.log('再见')
},
}
{
initilizae(){
console.log('您好')
},
close(){
console.log('再见')
}
}
])
柯里化
把一个函数拆分成多个函数
const checkType = (content,type)=>{
return Object.protoType.toString.call(content) === `object ${type}`
}
checkType(123,'Number')