定义:
装饰器是一种与类(class)相关的语法,用来注释或修改类和类方法。
应用:
可以看下面的例子
@testable
class MyTestableClass {
// ...
}
function testable(target) {
target.isTestable = true;
}
MyTestableClass.isTestable // true
所以,实际上:
@decorator
class A {}
// 等同于
class A {}
A = decorator(A) || A;
基本上,类是作为装饰器的参数传入进去的,装饰器是一个对类进行处理的函数。装饰器函数的第一个参数,就是所要装饰的目标类。
但是若一个参数不够,可以参考高阶函数的写法
function testable(isTestable) {
return function(target) {
target.isTestable = isTestable;
}
}
@testable(true)
class MyTestableClass {}
MyTestableClass.isTestable // true
@testable(false)
class MyClass {}
MyClass.isTestable // false
Symbol对象可以理解为创建出来的对象具有唯一性,且受js模块化的影响,创建出来的Symbol对象只能在当前模块中使用,似于一种标识唯一性的ID
fd