【发布时间】:2018-05-24 06:45:54
【问题描述】:
我有一个类装饰器,想用它来为类中的所有方法应用另一个装饰器,但我不太确定如何在没有 @ 语法的情况下以编程方式应用装饰器:
@LogAllMethods
class User {
greet() {
console.log('Hello')
}
}
function LogAllMethods(target) {
for (const key in Object.keys(target.prototype)) {
// apply LogMethod decorator
}
}
function LogMethod(target, key, descriptor) {
let method = descriptor.value
decriptor.value = function(...args) {
console.log(args)
method.apply(this, ...args)
}
}
【问题讨论】:
-
你的目标是 ES5 还是 ES2015 ?
-
您不使用
@语法以编程方式执行此操作。您检查规范以了解@语法的作用,然后从代码中执行。
标签: javascript typescript decorator