装饰器(Decorators)是 ECMAScript 2015(ES6)的一个特性,用于修饰类、方法、属性等。装饰器提案旨在使代码更加清晰、可读,并提供了一种在不改变原始类/方法/属性定义的情况下添加元数据和功能的方式。

装饰器语法使用 @ 符号,可以附加到类、类方法、类属性等。它们是一种语法糖,可以通过函数来定义。

以下是一个简单的装饰器示例:
// 装饰器函数
function myDecorator(target) {
  target.decorated = true;
}

// 使用装饰器修饰类
@myDecorator
class MyClass {
  // 类的定义
}

// 访问修饰后的类
console.log(MyClass.decorated); // 输出: true

在这个例子中,myDecorator 是一个装饰器函数,它接受一个参数 target,通常是类本身。通过 @myDecorator,我们将装饰器应用于 MyClass 类,使其具有 decorated 属性。

装饰器可以有多个,它们按照从上到下的顺序应用。装饰器可以是函数,也可以是表达式。装饰器表达式在运行时被求值,其结果被当作函数应用到被修饰的类、方法或属性上。

请注意,装饰器目前仍然是 ECMAScript 的一个提案,并不是标准的语言特性。在写这段回答时,装饰器的提案还处于 TC39(ECMAScript 标准化委员会)的 Stage 2 阶段。因此,其语法和行为可能会发生变化。


转载请注明出处:http://www.zyzy.cn/article/detail/6266/ES6