JS TS 装饰器
装饰器
2021.07.07:
今天面试的时候一时间没想起来,现在回想一下,这相当时`扩展作用域`,可以修改接下来的函数
装饰器是可以修改其他函数功能的函数,写法 @ + 函数名
在 Python 随处可见。
早期 TypeScript 在 1.5 版本发布了对装饰器的支持,现在 ES6 也通过了装饰器的提案,目前处于征集的第二阶段
在 Python 中的简单用法
def my_decorator1(fn):
print("my decorator1")
return fn
@my_decorator1
def my_func1():
print("my function1")
my_func1()
# my decorator1
# my function1
这相当于
def my_decorator2(fn):
def wrapper():
print("my decorator2")
return fn()
return wrapper
def my_func2():
print("my function2")
my_func = my_decorator2(my_func2)
my_func()
# my decorator2
# my function2
在 JS/TS 中简单使用
装饰整个类
@testable
class MyTestableClass {
// ...
}
function testable(target) {
target.isTestable = true;
}
MyTestableClass.isTestable // true