JavaScript装饰器是声明式增强类及成员的语法糖,属TC39 Stage 3提案,需Babel或TypeScript编译;本质为接收target/propertyKey/descriptor(方法)或constructor(类)的函数,用于日志、校验、响应式等横切逻辑。

JavaScript 装饰器(Decorators)是一种用于**声明式地增强类、类方法、访问器或参数**的语法特性,目前处于 Stage 3 提案阶段(TC39),尚未被所有环境原生支持,需借助 Babel 或 TypeScript 编译使用。它不是运行时魔法,而是编译期对目标结构进行元编程改造的语法糖。
装饰器的核心作用
装饰器本质是**函数**,接收目标对象(类构造器、方法描述符等)作为参数,返回处理后的新定义(或 void)。它让开发者能以简洁、可复用的方式注入横切关注点,比如日志、权限校验、缓存、重试、响应式绑定等。
常见使用场景包括:
- 给类方法自动添加性能监控或错误捕获
- 为类属性标记响应式依赖(如 Vue 3 的
@Ref、@Watch) - 在调用前统一校验参数或身份
- 冻结类实例、禁用构造器重复调用等约束逻辑
如何写一个基础方法装饰器
方法装饰器接收三个参数:target(原型对象)、propertyKey(方法名)、descriptor(属性描述符)。你可以修改 descriptor.value 来包装原函数。
立即学习“Java免费学习笔记(深入)”;
例如,实现一个简单的日志装饰器:
标签: vue javascript java js node.js json node typescript 浏览器 app
还木有评论哦,快来抢沙发吧~