面试题答案
一键面试function logMethod(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
const originalMethod = descriptor.value;
descriptor.value = function(...args: any[]) {
const methodName = propertyKey;
console.log(`开始执行${methodName}`);
const startTime = Date.now();
const result = originalMethod.apply(this, args);
const endTime = Date.now();
const duration = endTime - startTime;
console.log(`结束执行${methodName},耗时${duration}毫秒`);
return result;
};
return descriptor;
}
你可以这样使用这个装饰器:
class MyClass {
@logMethod
myMethod() {
// 模拟一些操作
for (let i = 0; i < 1000000; i++);
}
}
const myClass = new MyClass();
myClass.myMethod();