【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. 参数

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

相关推荐
anOnion1 小时前
构建无障碍组件之Alert Dialog Pattern
前端·html·交互设计
choke2331 小时前
[特殊字符] Python 文件与路径操作
java·前端·javascript
云飞云共享云桌面1 小时前
高性能图形工作站的资源如何共享给10个SolidWorks研发设计用
linux·运维·服务器·前端·网络·数据库·人工智能
Deng9452013141 小时前
Vue + Flask 前后端分离项目实战:从零搭建一个完整博客系统
前端·vue.js·flask
威迪斯特1 小时前
Flask:轻量级Web框架的技术本质与工程实践
前端·数据库·后端·python·flask·开发框架·核心架构
wuhen_n2 小时前
JavaScript内置数据结构
开发语言·前端·javascript·数据结构
大鱼前端2 小时前
为什么我说CSS-in-JS是前端“最佳”的糟粕设计?
前端
不爱吃糖的程序媛2 小时前
Capacitor:跨平台Web原生应用开发利器,现已全面适配鸿蒙
前端·华为·harmonyos
AC赳赳老秦2 小时前
2026国产算力新周期:DeepSeek实战适配英伟达H200,引领大模型训练效率跃升
大数据·前端·人工智能·算法·tidb·memcache·deepseek
CHU7290352 小时前
淘宝扭蛋机抽盒小程序前端功能解析:解锁趣味抽盒新体验
前端·小程序