JS面向切面编程(AOP)

  主要就是两个函数,在Function的原型上加上before与after,作用就是字面的意思,在函数的前面或后面执行,相当于无侵入把一个函数插入到另一个函数的前面或后面,应用得当可以很好的实现代码的解耦,js中的代码实现如下:

   Function.prototype.before = function (fn) {
     let that = this;
     return function (...params) {
       fn.apply(this, params)
       return that.apply(this, params)
     }
   }
   Function.prototype.after = function (fn) {
     let that = this;
     return function (...params) {
       let result = that.apply(this, params)
       if (result === false) {
         return
       }
       fn.apply(this, params)
       return result
     }
   }

应用的一些例子:

  1. 为window.onload添加方法,防止window.onload被二次覆盖
  2. 无侵入统计某个函数的执行时间
  3. 表单校验
  4. 统计埋点
  5. 防止csrf攻击

你可能感兴趣的:(JS面向切面编程(AOP))