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()

浙公网安备 33010602011771号