AOP 面向切面编程

227 阅读1分钟

AOP(Aspect Oriented Programming)面向切面编程 使用场景,比如原来有一方法fn,现在需要在fn前面增加一个方法newFn,此时就像在fn方法执行前,切面出来,放置一个newFn方法 代码如下:

Function.prototype.before = function (before) {
  let that = this
  return function () {
    before.apply(that, arguments);
    that.apply(that, arguments);
  }
}

let fn = function (val) {
  console.log('old', val)
}
let newFn = fn.before(function (val) {
  console.log('new', val)
})

newFn('123');

// new 123
// old 123

说明:newFn方法没有改变fn,并且在fn前执行