【es6 】中的装饰器 decorator 到底是什么,有什么用,和ts 中的装饰器decorator有啥区别

es6 中的装饰器 decorator

再 es6 中新增了 3个器,分别是 迭代器、生成器、还有就是装饰器,关于迭代器和生成器可以参考这篇文章。​​​​

装饰器实际上是 es7 提出来的,它允许你在类、类方法、类属性等声明前面添加特殊的修饰符,以此来修改他们的行为。

  1. 装饰器是一个特殊的声明,语法是 @<函数名>,函数名的这个函数需要有具体实现
  2. 装饰器通常用来修改或扩展类,类方法,类属性
  3. 装饰器是一个函数
  4. 装饰者模式就是一种在不改变原类和使用继承的情况下,动态地扩展对象功能的设计理论。
  5. 只针对类
  6. 接收一些参数并返回一个函数,或执行一些操作
  7. 再运行时被调用,用来处理目标对象并返回一个新的对象,从而实现对目标对象的修改或增强
  8. 可以被用来
    1. 添加元数据
    2. 修改函数行为
    3. 实现面向切面编程
  9. 还只是一个草案 stage 2,所以在 mdn 官方文档搜不到
  10. 用法
    1. 类的装饰
      1. 在 class 上面加一行代码就行
      2. 接收一个参数,即类本身
      3. 如果要传递参数,可以在装饰器外层再封装一层函数
    2. 类属性/类方法装饰
      1. 能够接受三个参数
        1. 类的原型对象
        2. 需要装饰的属性名
        3. 装饰属性名的描述对象
    3. 装饰器不能用于修饰函数,因为函数存在变量声明

ts 中的装饰器

es6 中的decorator 还只是草案,不能直接使用,但是可以使用 js 工具链(babel, TypeScript 等)实现装饰器。所以在 ts 中可以使用装饰器。

TypeScript 中的装饰器和 JavaScript 中的装饰器本质上是相同的,都是用来修改或者增强类、方法、属性或函数等的功能。它们的语法和基本概念是相似的。

官网文档

ts 中的装饰器可以附加到

  1. 类声明
  2. 方法
  3. 配件
  4. 特性
  5. 参数

也是指针对类和类属性和类方法的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/704162.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

octave 与 matlab

octave 与 matlab 联系与区别 Octave 和 Matlab 是两种数字计算和科学编程语言。它们之间有很多联系和区别。 联系&#xff1a; Octave 和 Matlab 都是为了进行数值计算和科学编程而设计的&#xff0c;它们都具有很强的数值计算和矩阵操作的能力。Octave 和 Matlab 都支持向量…

Spring中@Transactional注解的方法在不同Bean调用时的事务生效性

在Spring框架中&#xff0c;Transactional注解用于声明一个方法或类需要事务管理。当一个方法被Transactional注解标记时&#xff0c;Spring会为该方法的执行创建一个新的事务&#xff08;如果当前没有事务存在的话&#xff09;&#xff0c;或者在现有事务的上下文中运行&#…

记录 | docker内修改host方法

方法一&#xff1a; 直接进入容器中修改/etc/hosts 缺点&#xff1a;重启容器后&#xff0c;增加的内容会丢失 方法二&#xff1a; 制作镜像的时候&#xff0c;直接修改。 限制&#xff1a; 需要是root用户&#xff0c;需要在容器中安装sudo 增大了镜像大小 方法三&…

LeetCode 3019.按键变更的次数

给你一个下标从 0 开始的字符串 s &#xff0c;该字符串由用户输入。按键变更的定义是&#xff1a;使用与上次使用的按键不同的键。例如 s “ab” 表示按键变更一次&#xff0c;而 s “bBBb” 不存在按键变更。 返回用户输入过程中按键变更的次数。 注意&#xff1a;shift …

如何在安卓手机与电脑上写文章直接发布至自己的hexo静态博客网站上

#需求 1.当有了自己的hexo博客之后,就想随时随地在不同的设备之间写文章&#xff0c;并发布到自己的博客上。 #过程 2.突然有一天逛到别人的博客上&#xff0c;看到别人写了一篇文章&#xff0c;是用小书匠&#xff0c;能实现不同的设备写文章并发送至自己的静态网站。 #实现 3…

Java最新面试宝典 Spring面试题

Java最新面试宝典 Spring面试题 前言1、Spring是什么&#xff1f;2、Spring 的优点&#xff1f;3、什么是IOC&#xff1f;4、什么是 AOP&#xff1f;5、AOP 有哪些实现方式&#xff1f;6、什么是DI依赖注入&#xff1f;7、将一个类声明为Spring的 bean 的注解有哪些&#xff1f…

推荐收藏!商汤智能座舱算法岗面试题7道(含解析)!

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂同学、参加社招和校招面试的同学&#xff0c;针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 今天我整…

vue3.0 ref的使用

一.在vue2中定义变量 在使用vue2的时候,我们定义变量会在data中进行定义&#xff0c;那么我们在vue3中是如何定义变量的呢&#xff1f;我们会使用ref来进行定义。 (1)我们通过一个简单的案例来看 代码&#xff1a; <template> <div><button click"coun…

支持向量机|机器学习方法(李航)

支持向量机&#xff0c;可以看着是升级版的感知机&#xff0c;与感知机相比。他们都是找到一个超平面对数据集进行分割&#xff0c;区别在于&#xff0c;感知机模型得到的超平面空间中可以有无穷个超平面&#xff0c;但支持向量机仅含有一个&#xff0c;这一个超平面与样本点的…

Syslog日志采集

Syslog日志采集 1、Linux rsyslog服务1.1、安装rsyslog1.2、配置客户端1.3、配置服务端 2、Filebeat 服务端2.1、安装Filebeat2.2、配置Filebeat 3、Java程序服务端3.1、服务端代码 Syslog日志采集需要syslog客户端和syslog服务端&#xff0c;客户端负责发送日志、服务端负责采…

matplotlib plt.show()却弹出空白框并之后自动退出程序的原因及解决方法

运行下列代码并使用plt.show()进行展示时候&#xff0c;cmd输出如下&#xff1a; 先弹出空白框&#xff1a; 而后直接退出程序&#xff1a; 之前遇到过很多次&#xff0c;由于不输出Traceback&#xff0c;完全不知道什么原因。结果发现是因为没有导入torch导致的。 解决办法就…

C++面试 -操作系统-安全能力:内存溢出、内存泄漏的原因与解决

目录 内存溢出&#xff08;Memory Overflow&#xff09; 内存溢出介绍 解决内存溢出问题的方法 内存泄漏&#xff08;Memory Leak&#xff09; 内存泄露基础 解决内存泄漏问题的方法 内存溢出&#xff08;Memory Overflow&#xff09; 内存溢出介绍 内存溢出是指程序在执…

人工智能在测绘行业的应用与挑战

目录 一、背景 二、AI在测绘行业的应用方向 1. 自动化特征提取 2. 数据处理与分析 3. 无人机测绘 4. 智能导航与路径规划 5. 三维建模与可视化 6. 地理信息系统&#xff08;GIS&#xff09;智能化 三、发展前景 1. 技术融合 2. 精准测绘 3. 智慧城市建设 4. 可…

配置QINQ

1.实验环境&#xff1a; 某运营商接了公司A和公司B的网络&#xff0c;现需要使用qinq技术实现公司A、公司B的私有网络能够使用运营商网络互通。公司A使用灵活的qinq让内部网络的vlan 10映射为公网vlan2进行数据转发&#xff0c;vlan20映射为vlan3进行数据转发。公司B使用基本的…

鸿蒙开发路由跳转踩坑

文章目录 前言常见路由不能跳转问题总结 一、前言 02-25 10:40:10.799 42182-2075594 E C03900/Ace: [manifest_router.cpp(GetPagePath)-(0)] [Engine Log] cant find this page pages 02-25 10:40:10.799 42182-2075594 E C03900/Ace: [page_router_manager.cpp(StartPush…

C++完美转发【gpt】

提问&#xff1a;用极其通俗易懂的文字解释C的完美转发 ChatGPT 好的&#xff0c;让我用非常通俗易懂的方式解释一下 C 中的完美转发。 假设你有一个房子&#xff08;函数&#xff09;&#xff0c;你想把家具&#xff08;参数&#xff09;从一个房间&#xff08;函数&#x…

「哈哥赠书活动 - 48期」-『商业分析思维与实践:用数据分析解决商业问题宣传文案』

⭐️ 赠书 - 《商业分析思维与实践》 ⭐️ 内容简介 本书以业务为导向&#xff0c;详细地讲解了如何通过大数据分析来解决商业问题。其目的在于运用大数据分析思维&#xff0c;帮助读者把学术知识应用于真实的业务场景&#xff0c;解决实际的业务问题。本书基于业务问题&#x…

Arduino单片机基础介绍

&#xff08;本文为简单介绍&#xff0c;内容源于网络和AI&#xff09; Arduino单片机&#xff0c;自2005年诞生以来&#xff0c;已经成为全球爱好者和专业工程师们快速实现创意原型的重要工具。Arduino的普及不仅因其强大的功能和简易的操作&#xff0c;还在于其背后强大的社…

CPC模型源码阅读

CPC模型源码阅读 将高维数据压缩到更紧凑的隐空间中&#xff0c;在其中条件预测更容易建模。 我们使用强大的自回归模型在这个隐空间中预测未来的许多步骤。 依靠噪声对比估计&#xff08;Noise-Contrastive Estimation&#xff09; 来计算损失函数&#xff08;和自然语言模型…

Java计划线程池ScheduledThreadPoolExecutor运行流程和源码分析

1. 计划线程池ScheduledThreadPoolExecutor简介 ScheduledThreadPoolExecutor继承自线程池ThreadPoolExecutor&#xff0c;并在其基础上增加了按时间调度执行任务的功能&#xff0c;如果对ThreadPoolExecutor还不是很熟悉&#xff0c;可以阅读一下这篇文章&#xff1a; Java线…