JAVASCRIPT中装饰器是什么(装修)
装饰器是什么?
解码器是将另一段代码包装在一个代码中的简单方法。
这个概念类似于你以前听说过的功能成分和高阶成分。
这在许多情况下都被使用过,也就是说,简单地将一个函数包装到另一个函数中:
前面的示例生成包装的新函数,它执行与 dosomething 相同的操作,但它们的不同之处在于在包装函数之前和之后输出一些语句。
如何使用 javascript 装饰器
javascript 中的装饰器使用特殊的语法,使用 @作为标识符,并将其放在修饰代码之前。
注:装潢师仍在拟议阶段,这意味着仍有改变的余地。
您可以在相同的代码之前放置许多装饰符,然后解释器按顺序执行
在上面的示例中,定义了一个类,使用三个装饰器:两个用于类本身,一个用于类的属性:
-@log 可以记录所有访问类
-@immutable 使类不可变 - 也许新实例调用 object. 冻结
-@time 记录从执行到输出唯一标记的方法
现在,虽然浏览器或 node 还不受支持。但是,如果您使用 babel,您可以使用转换 - 装饰器 - 遗留插件 - 使用装饰器。
因为 babel 5 支持处理装饰器,所以在插件中使用 legacy,但它可能与最终标准不同,因此使用了遗留一词。
你为什么要用装饰工?
函数组合在 javascript 中已经成为可能,但是在另一个代码(如类或类属性)中使用是相当困难或不可能的。
不同类型的装潢师
现在,装饰器只支持类和类属性,包括属性、方法、获取函数和设置函数
装饰器将只在程序第一次运行时执行一次,并且修饰后的代码将被返回的值替换
类属性装饰器
属性装饰器应用于类的单个成员 - 无论是属性、方法、获取函数还是集合函数。
装饰器函数调用三个参数:
- 目标 - 修改类
- 名称类别成员的姓名
- 描述符 - 成员描述符。object 将此参数传递给 object.fineproperty
@readonly 是一个典型的例子:
函数只读(target,name,descriptor){
可写 = 假;
反转描述符
12341234
前面的示例将成员描述符中的可写设置为 false。