howieyi

No pains, No gains!

View project on GitHub

面向切面编程(AOP)

AOP (Aspect Oriented Programming)主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。

<!-- 统计当前所有函数的耗时最长 -->
function test() {
    alert(2)
}

Function.prototype.before = function (fn) {
    var _self = this;
    return function () {
        if(!fn.apply(this, arguments)) return 0;

        return _self.apply(_self, arguments);
    }
}

Function.prototype.after = function (fn) {
    var _self = this;
    return function () {
        var result = _self.apply(_self, arguments);

        if(!result) return 0;

        fn.apply(this, arguments);

        return result;
    }
}

test.after(function () {
    alert(3);
}).before(function () {
    alert(1);
    return false; // 控制是否继续执行
})();