高阶函数
要理解AOP,那么首先要了解高阶函数,成为高阶函数需要两个条件:
- 函数的参数是函数 (callback回调函数,将一个函数传入到另一个函数中)
- 函数的返回值是函数 (return function(){})
AOP
面向切片编程,即把代码二次封装,在不破坏原有逻辑的基础上,插入自己的逻辑,下面看个例子,在原有的say函数中添加新逻辑:
// 现在有一个say函数,调用他会打印‘say~~’
function say(a, b) {
console.log('say~~', a, b);
}
// 如果我们想在say函数中添加自己的逻辑,该怎么办呢?我们想要的结果是下面这样的
let newSay = say.before(function() { //在原有逻辑执行之前执行
console.log('您好')
});
// 我们可以利用function 的原型链
Function.prototype.before = function(fn) {
let that = this;
return function () {
fn();
that.apply(that,arguments);
}
}
newSay('叔叔', '阿姨');
/** 结果:
您好
say~~ 叔叔 阿姨
*/
网友评论