Function.prototype.before = function (beforefn) { var _this = this; // 保存原函数的引用 return function () { // 返回包含了原函数和新函数的"代理"函数 beforefn.apply(this, arguments); // 先执行新函数,修正this return _this.apply(this, arguments); // 再执行原函数 } }; Function.prototype.after = function (afterfn) { var _this = this; return function () { var ret = _this.apply(this, arguments); //先执行原函数 afterfn.apply(this, arguments); //再执行新函数 return ret; } }; var func = function () { console.log(2); }; func = func.before(function () { console.log(1); }).after(function () { console.log(3); }); func();
网友评论