1. 程式人生 > >AOP 動態添加函數

AOP 動態添加函數

after for aop cti eve 技術 .proto turn function

技術分享圖片
Function.prototype.before = function(beforefn) {
    
    // 保存原函數的引用
    var self = this;
    
    // 返回包含了原函數和新函數的代理函數
    return function() {

        // 執行新函數,修正this
        beforefn.apply(this, arguments);

        // 執行原函數
        return self.apply(this, arguments);
    };
};

Function.prototype.after 
= function (afterfn) { var self = this; return function () { // 先調用 調用的函數,在調用afterfn // 調用這個函數的也是一個函數 var ret = self.apply(this, arguments); afterfn.apply(this, arguments); return ret; }; }; var func = function () { console.log(2); };
// 每次使用之前都要這麽寫一遍 function init(fn) { fn = fn.before(function () { console.log(1); }) .after(function () { console.log(3); }); return fn; } func = init(func); func();
View Code

AOP 動態添加函數