AOP 动态添加函数

Posted tujw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AOP 动态添加函数相关的知识,希望对你有一定的参考价值。

技术图片
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 动态添加函数的主要内容,如果未能解决你的问题,请参考以下文章

阿里四面:你知道Spring AOP创建Proxy的过程吗?

在片段中动态添加文本视图

AOP 面向切面编程

[JAVA]动态代理与AOP的千丝万缕

Java动态代理+注解体现Spring AOP思想

Java动态代理+注解体现Spring AOP思想