面向切片编程AOP-装饰者模式

2020-07-17  本文已影响0人  小麻烦爱学习

AOP: 面向切片编程,在不改变代码原有逻辑的情况下,增加一些额外的功能.
下面例子中核心代码都在fn中,但是想在执行fn前后做一些操作

Function.prototype.before = function(beforeFn) {
    return () => {
        beforeFn();
        this();
    }
}

Function.prototype.after = function(afterFn) {
    return () => {
        this(); // this指向的不是原来的fn,而是before方法返回的匿名函数,包括了注入的beforeFn和原始的fn
        afterFn();
    }
}

function fn(){
    console.log('fn');
}

let newFn = fn.before(() => {
    console.log('before');
}) // 执行到这里,返回结果是before里面返回的匿名函数(不再是原来的fn),匿名函数也是可以调用after方法
.after(() => {
    console.log('after');
});
let rs = newFn();
// 打印结果
//before
//fn
//after


上一篇 下一篇

猜你喜欢

热点阅读