window.Function.prototype.befor = function (f) {
const self = this
let params = Array().slice.call(...arguments,1)
let result = f.apply(this,params)
return self.bind(this,result)
};
window.Function.prototype.after = function(f) {
const self = this
let params = Array().slice.call(...arguments,1)
let result = self.call(this)
return f.bind(this,...[result,...params])
}
function main(user) {
console.log('核心代码执行了......');
let data = user || {}
data.name = 'main'
return data
}
//单独调用befor / after
let b = main.befor(function(){
console.log('isBefor......',args);
let user = {}
user.name = 4
return user
})
b()
let a = main.after(function(args){
console.log('isAfter......',args);
args.age = 4
return args
})
a()
//链式调用
let f = main.befor(()=> {
console.log('isBefor......');
let user = {}
user.name = 4
return user
}).after((args) => {
console.log('isAfter......',args);
args.age = 4
return args
})
console.log(f()); // 执行并获得返回值
写了一段AOP
最新推荐文章于 2025-08-23 02:53:08 发布