AOP(面向切片编程)

1,081 阅读1分钟

高阶函数

要理解AOP,那么首先要了解高阶函数,成为高阶函数需要两个条件:

  • 函数的参数是函数 (callback回调函数,将一个函数传入到另一个函数中)
  • 函数的返回值是函数 (return function(){})

AOP

面向切片编程,即把代码二次封装,在不破坏原有逻辑的基础上,插入自己的逻辑,下面看个例子,在原有的say函数中添加新逻辑:

// 现在有一个say函数,调用他会打印‘say~~’
function say() {
  console.log('say~~');
}
// 如果我们想在say函数中添加自己的逻辑,该怎么办呢?我们想要的结果是下面这样的
let newSay = say.before(function() {  //在原有逻辑执行之前执行
  console.log('您好')
});
newSay();
// 我们可以利用function 的原型链
Function.prototype.before = function(fn) {
  let that = this;
  return function () {
    fn();
    that.apply(that,arguments);
  }
}
/** 结果:
 您好
 say~~ 叔叔 阿姨 
*/