装饰器是什么?

解码器是将另一段代码包装在一个代码中的简单方法。

这个概念类似于你以前听说过的功能成分和高阶成分。

这在许多情况下都被使用过,也就是说,成都装修公司简单地将一个函数包装到另一个函数中:

前面的示例生成包装的新函数,它执行与 DoSomething 相同的操作,但它们的不同之处在于在包装函数之前和之后输出一些语句。

如何使用 Javascript 装饰器

Javascript 中的装饰器使用特殊的语法,使用 @作为标识符,并将其放在修饰代码之前。

注:装潢师仍在拟议阶段,这意味着仍有改变的余地。

您可以在相同的代码之前放置许多装饰符,然后解释器按顺序执行

在上面的示例中,定义了一个类,使用三个装饰器:两个用于类本身,一个用于类的属性:

-@log 可以记录所有访问类

-@immutable 使类不可变 - 也许新实例调用 Object. 冻结

-@Time 记录从执行到输出唯一标记的方法

现在,虽然浏览器或 NODE 还不受支持。但是,如果您使用 Babel,您可以使用转换 - 装饰器 - 遗留插件 - 使用装饰器。

因为 Babel 5 支持处理装饰器,所以在插件中使用 Legacy,但它可能与最终标准不同,因此使用了遗留一词。

你为什么要用装饰工?

函数组合在 Javascript 中已经成为可能,但是在另一个代码(如类或类属性)中使用是相当困难或不可能的。

不同类型的装潢师

现在,装饰器只支持类和类属性,包括属性、方法、获取函数和设置函数

装饰器将只在程序第一次运行时执行一次,并且修饰后的代码将被返回的值替换

类属性装饰器

属性装饰器应用于类的单个成员 - 无论是属性、方法、获取函数还是集合函数。

装饰器函数调用三个参数:

- 目标 - 修改类

- 名称类别成员的姓名

- 描述符 - 成员描述符。Object 将此参数传递给 Object.fineProperty

@readonly 是一个典型的例子:

函数只读(target,name,descriptor){

可写 = 假;

反转描述符

12341234

前面的示例将成员描述符中的可写设置为 false。

JAVASCRIPT中装饰器是什么(装修)的更多相关文章

  1. JavaScript 的装饰器:它们是什么及如何使用

    请访问我的独立博客地址:https://imsense.site/2017/06/js-decorator/ 装饰器的流行应该感谢在Angular 2+中使用,在Angular中,装饰器因TypeSc ...

  2. 8.Python中装饰器是什么?

    Python中装饰器是什么? A Python decorator is a specific change that we make in Python syntax to alter functi ...

  3. 第7.18节 案例详解:Python类中装饰器@staticmethod定义的静态方法

    第7.18节 案例详解:Python类中装饰器@staticmethod定义的静态方法 上节介绍了Python中类的静态方法,本节将结合案例详细说明相关内容. 一.    案例说明 本节定义了类Sta ...

  4. 从ES6重新认识JavaScript设计模式: 装饰器模式

    1 什么是装饰器模式 向一个现有的对象添加新的功能,同时又不改变其结构的设计模式被称为装饰器模式(Decorator Pattern),它是作为现有的类的一个包装(Wrapper). 可以将装饰器理解 ...

  5. TypeScript 中装饰器的理解?应用场景?

    一.是什么 装饰器是一种特殊类型的声明,它能够被附加到类声明,方法, 访问符,属性或参数上 是一种在不改变原类和使用继承的情况下,动态地扩展对象功能 同样的,本质也不是什么高大上的结构,就是一个普通的 ...

  6. Python中装饰器的用法

    定义: 装饰器本身就是一个函数 为其他函数提供附加功能 不改变源代码 不改变原调用方式 装饰器=高阶函数+嵌套函数 知识点: 函数本身就是一个变量(意味着可以被复制给一个变量:test=test(1) ...

  7. python flask route中装饰器的使用

    问题:route中的装饰器为什么感觉和平时使用的不太一样,装饰器带参数和不太参数有什么区别?被修饰的函数带参数和不带参数有什么区别? 测试1:装饰器不带参数,被修饰的函数也不带参数. def log( ...

  8. python中装饰器的原理

    装饰器这玩意挺有用,当时感觉各种绕,现在终于绕明白了,俺滴个大爷,还是要慢慢思考才能买明白各种的真谛,没事就来绕一绕 def outer(func): def inner(): print(" ...

  9. python中装饰器修复技术

    python装饰器@wraps作用-修复被装饰后的函数名等属性的改变 Python装饰器(decorator)在实现的时候,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变), 为了 ...

随机推荐

  1. SpringMVC(上)

    一.SpringMVC简介 (1)springMVC概述 Spring MVC属于SpringFrameWork的后续产品,Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块. 使用 ...

  2. java正则表达式备忘

    最近框架和爬虫上常要处理字符串匹配和替换的场景,备忘. 非贪婪模式 比如要匹配html文本中的连接,例如a href="www.abc.com/xyz/o"需要替换为a href= ...

  3. 带空格的 jquery ID 选择器

    当 DOM ID有一个空格时,如何使用 jquery 的 ID 选择器? 例如,我的 DOM ID 是 <div id="content Module">Stuff&l ...

  4. 运维笔记--linux下忘记mysql root密码

    补充链接:Windows下忘记密码处理: https://www.cnblogs.com/hellojesson/p/5972950.html 场景描述: Linux环境下忘记 root 密码, 1. ...

  5. Win10 LTSC 2019 长期支持版

    win 10 LTSB 2016 文件名:cn_windows_10_enterprise_2016_ltsb_x86_dvd_9057089.iso (2.62GB) 语言: Chinese – S ...

  6. SQL多个逗号分开的字段值 取对应的数据名称信息

    字段值 函数实现: )) ) as begin set @strs=','+@strs+',' ) ) set @str2='' declare SyncOrderCursor cursor for ...

  7. codeMirror配置

    介绍 CodeMirror是一款在线的支持语法高亮的代码编辑器.官网:http://codemirror.net/ 下载后,解压开到的文件夹中,lib下是放的是核心库和核心css,模式下放的是各种支持 ...

  8. Java设计模式之:单例模式

    单例模式 建议实现方式:枚举方式实现单例 单例模式的定义 单例模式就是在程序运行中只实例化一次,创建一个全局唯一对象,有点像 Java 的静态变量,但是单例模式要优于静态变量,静态变量在程序启动的时候 ...

  9. vue-cli构建的项目手动添加eslint配置

    一.package.json里配置添加 1.scripts里添加快捷eslint检查命令 "lint": "eslint --ext .js,.vue src" ...

  10. python time模块(13)

    python time模块主要包含各种提供日期.时间功能的相关函数.time模块既提供了把日期.时间格式化为字符串的功能,也提供了从字符串恢复日期.时间的功能. 一.前言 在 time 模块内提供了很 ...