angular中装饰器:https://www.jianshu.com/p/650023b6a62c
手写一个方法装饰器:
export class AppComponent implements OnInit {
ngOnInit() {
new Person().pay(100);
}
}
function methodName(target: any, key: string, descriptor: PropertyDescriptor) {
const origin = descriptor.value;
descriptor.value = function delegate() {
const className = target.constructor.name;
const args = JSON.stringify(arguments);
console.log(`${className}.${key}.${args}`);
return origin.call(this, ...arguments);
};
}
class Person {
@methodName
pay(money) {
console.log(money);
}
}
打印结果:
key值:pay,表示方法名
target打印结果: