JavaScript装饰器模式怎么用
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章主要讲解了"JavaScript装饰器模式怎么用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"JavaScript装饰器模式怎么用"吧!装饰器
千家信息网最后更新 2025年02月23日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安全错误
数据库的锁怎样保障安全
宁德哪里有软件开发
数据库的同义词
南京云汉软件开发
靖江网络技术市场
基岩版中文服务器推荐
重邮数据库博士真题
所有的服务器
oltp数据库产品
实验四 数据库设计
甘肃中小学生网络安全
河南掌上登记扫码出现服务器异常
域名服务器哪家最便宜
计算机网络安全及防护读后感
查找中文会议文献的数据库
e家服务器ip
会所线上点餐软件开发
讯致网络技术有限公司怎么样
寒假网络安全教育版本
数据库中布尔值怎么表示
强制卸载服务器
互穿网络技术制备水凝胶
数据库安全三个角色
网络安全法在国内建设营运
网络安全形势立法
打印机没有连接到服务器上
中国与美国互联网科技
吉的堡教育软件开发怎么样
网络安全论文答辩模板
网络安全网络扫描
中国互联网高科技股