JavaScript装饰器模式怎么用
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章主要讲解了"JavaScript装饰器模式怎么用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"JavaScript装饰器模式怎么用"吧!装饰器
千家信息网最后更新 2025年01月18日JavaScript装饰器模式怎么用
这篇文章主要讲解了"JavaScript装饰器模式怎么用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"JavaScript装饰器模式怎么用"吧!
装饰器模式想必大家并不陌生:它允许向一个现有的对象添加新的功能,同时又不改变其结构,属于结构型模式,它是作为现有的类的一个包装。
这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。
在 JS 中,装饰器(Decorator
)是ES7中的一个新语法,它可以对类、方法、属性
进行修饰
,从而进行一些相关功能定制。它的写法与Java的注解(Annotation
)非常相似,但是功能还是有很大区别。
代码示例:
不使用装饰器:
const log = (srcFun) => {if(typeof(srcFun) !== 'function') {throw new Error(`the param must be a function`);}return (...arguments) => {console.info(`${srcFun.name} invoke with ${arguments.join(',')}`);srcFun(...arguments);}}const plus = (a, b) => a + b;const logPlus = log(plus);logPlus(1,2);// plus invoke with 1,2
使用装饰器:
const log = (target, name, descriptor) => {var oldValue = descriptor.value;descriptor.value = function() {console.log(`Calling ${name} with`, arguments);return oldValue.apply(this, arguments);};return descriptor;}class Math {@log // Decoratorplus(a, b) {return a + b;}}const math = new Math();math.plus(1, 2);// Calling plus with 1,2
从上面的代码可以看出,如果有的时候我们并不需要关心函数的内部实现,仅仅是想调用它的话,装饰器能够带来比较好的可读性,使用起来也是非常的方便。
// readonly 装饰器import { readonly } from 'core-decorators';class Fudao {@readonlytitle = 'A';}var fudao = new Fudao();fudao.title = 'B'; // This will log error & doesn't work
JS中的装饰器本质也是一个函数,利用的是JS中object
的descriptor
;
装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。
感谢各位的阅读,以上就是"JavaScript装饰器模式怎么用"的内容了,经过本文的学习后,相信大家对JavaScript装饰器模式怎么用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
模式
功能
学习
代码
内容
函数
方法
结构
包装
很大
相似
陌生
写法
前提
动态
可读性
同时
完整性
对象
就是
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全宣传周启动仪式
对话网络安全专家竞争
朝阳区技术软件开发口碑推荐
网页php操作数据库
淘宝店软件开发类目
遥感为主的软件开发
pc往服务器传输文件
gmod服务器租用
pp助手数据库失败
上海南卉互联网科技有限公司
建数据库引号里面分大小写
oppo主题商店服务器繁忙
河北星物云联软件开发有限公司
ibm服务器后面dc灯不亮
网络技术的了解
名企c软件开发面试
excel数据库连接比较卡
网络中心管理服务器
金蝶kis v13数据库
软件测试面试题 数据库
四面体快报收录在哪个数据库
高中《网络技术应用》教案
后台软件开发书籍
网络安全教育知识内容导读
广州盛驰互联网科技
网络安全模式传染病毒吗
体验盒子网络安全
什么是数据库的重组
阿里云端服务器放在哪里
pipeline远程连接服务器