JS实现前置和后置AOP

Function.prototype.before = function (beforefn) {
    var _self = this; //保存原函数引用 例如这里指向的是func
    return function () { //返回包含了原函数和新函数的"代理函数"
     beforefn.apply(_self, arguments); //执行新函数,修正this 原来this指向的是window
     //执行原函数
    return _self.apply(_self, arguments); // 使用arguments传参, 使用apply比较方便调用
    }
   };
   Function.prototype.after = function (afterfn) {
    var _self = this;
    return function () {
     var ret = _self.apply(_self, arguments);
     afterfn.apply(_self, arguments);
     return ret;
    }
   };
   var func = function (...arguments) {
       console.log('2', arguments);
   }
   func = func.before(function (...arguments) {
    console.log("1", arguments);
   }).after(function (...arguments) {
    console.log("3", arguments);
   })
   
   func(1, 2, 3);

JS实现前置和后置AOP
参考文章为this指向,防抖函数中的fn.apply(this,arguments)作用

上一篇:GNU链接脚本(11) - 构建可运行程序


下一篇:GNU-make中文手册-v3.8.0