3-12 什么是面向切面编程(AOP)?

主要就是两个函数,在Function的原型上加上before与after,作用就是字面的意思,在函数的前面或后面执行,相当于无侵入把一个函数插入到另一个函数的前面或后面,应用得当可以很好的实现代码的解耦,js中的代码实现如下:



// function dome() {
//     var a = 12 + 9;
//     console.log(a)
//     a = 24
// }

Function.prototype.after = function (callback) {
    let self = this;
    return function () {
        const res = self.apply(this, arguments)
        callback.apply(this, arguments)
        return res
    }
}

Function.prototype.before = function (callback) {
    let self = this;
    return function() {
        const res = callback.apply(this, arguments)
        return self.apply(this, [res]);
    }
}


// 拆分 dome 内的逻辑
function plus () {
    console.log('主逻辑函数执行之前===>')
    return 12 + 9
}

function log(a) {
    console.log(a)
}

function update () {
    console.log('主逻辑函数执行之后===>')
}
const fn = log.before(plus).after(update)

fn()


posted @ 2022-03-12 17:52  林见夕  阅读(82)  评论(0)    收藏  举报