最近回顾了下AOP——面向切面编程,刚好项目有需要用到,就使用了一下,感觉效果不错,代码贴出来,请拍砖。
主要用到的就是装饰器特性。
主要目的是在实例test.request方法调用后,自动顺序执行components和log方法
export function after(...args) {
return (_target, name, descriptor) => {
// 获取value,其实就是request函数
const oldValue = descriptor.value;
// 将value重新赋值一个函数
descriptor.value = async function () {
// tslint:disable-next-line: no-console
console.log(`Calling ${name} with`, arguments);
// 将原本的函数执行一下,apply改变this的指向
const val = await oldValue.apply(t