广州网站订制开发泉州企业建站模板

张小明 2026/1/9 15:37:04
广州网站订制开发,泉州企业建站模板,某网站做参考文献的书写,松江品牌网站建设先理解 Proxy 的核心思想 Proxy 就像一个“拦截器”#xff0c;它可以“监听”一个对象的操作#xff0c;比如#xff1a; 访问对象的属性#xff08;读取#xff09; → 触发 get 拦截器给对象的属性赋值#xff08;写入#xff09; → 触发 set 拦截器调用对象的方法…先理解 Proxy 的核心思想Proxy 就像一个“拦截器”它可以“监听”一个对象的操作比如访问对象的属性读取 → 触发get拦截器给对象的属性赋值写入 → 触发set拦截器调用对象的方法 → 其实是先访问方法触发get再执行它但集合类型Map、Set 等不直接用属性赋值来写入数据Map 写入数据是调用它的set(key, value)方法Set 写入数据是调用它的add(value)方法读取数据是调用 Map 的get(key)或 Set 的has(value)方法所以我们想拦截“写入”操作就要拦截这些方法的调用。Proxy 怎么拦截方法调用当你访问proxyMap.set会触发 Proxy 的get拦截器告诉你访问了set方法。这时我们返回一个“包装函数”这个函数内部可以插入自定义逻辑比如打印日志然后再调用原始的set方法。这样就实现了“拦截写入操作”。具体示例拦截 Map 的读取和写入constmapnewMap();consthandler{get(target,prop,receiver){// 访问属性或方法时触发constorigMethodtarget[prop];if(typeoforigMethodfunction){// 如果访问的是方法返回一个包装函数returnfunction(...args){if(propset){console.log(写入操作set(${args[0]},${args[1]}));}elseif(propget){console.log(读取操作get(${args[0]}));}// 调用原始方法returnorigMethod.apply(target,args);};}// 访问普通属性直接返回returnReflect.get(target,prop,receiver);}};constproxyMapnewProxy(map,handler);proxyMap.set(name,CodeMoss);// 控制台输出写入操作set(name, CodeMoss)console.log(proxyMap.get(name));// 控制台输出读取操作get(name)// 输出CodeMoss可以把它理解成访问proxyMap.set→ Proxy 拦截返回一个“带日志”的函数调用这个函数时先打印日志再调用真正的map.setSet 也是类似的只是写入方法叫add读取方法叫hasconstsetnewSet();consthandler{get(target,prop,receiver){constorigMethodtarget[prop];if(typeoforigMethodfunction){returnfunction(...args){if(propadd){console.log(写入操作add(${args[0]}));}elseif(prophas){console.log(读取操作has(${args[0]}));}returnorigMethod.apply(target,args);};}returnReflect.get(target,prop,receiver);}};constproxySetnewProxy(set,handler);proxySet.add(123);// 控制台输出写入操作add(123)console.log(proxySet.has(123));// 控制台输出读取操作has(123)// 输出trueWeakMap 和 WeakSet 也一样只是它们的键或值必须是对象且不能遍历constweakMapnewWeakMap();consthandler{get(target,prop,receiver){constorigMethodtarget[prop];if(typeoforigMethodfunction){returnfunction(...args){if(propset){console.log(WeakMap 写入操作键:,args[0],值:,args[1]);}elseif(propget){console.log(WeakMap 读取操作键:,args[0]);}returnorigMethod.apply(target,args);};}returnReflect.get(target,prop,receiver);}};constproxyWeakMapnewProxy(weakMap,handler);constobjKey{};proxyWeakMap.set(objKey,secret);// 控制台输出WeakMap 写入操作键: {} 值: secretconsole.log(proxyWeakMap.get(objKey));// 控制台输出WeakMap 读取操作键: {}// 输出secret总结Proxy 的get拦截器拦截的是“属性访问”方法调用是先访问方法再执行。集合的写入和读取都是通过调用方法实现的所以我们拦截方法访问返回包装函数。包装函数里可以插入自定义逻辑日志、权限等然后调用原始方法完成操作。把 const objKey {}; 换成 map”把 WeakMap 的键从一个普通对象{}换成一个 Map 对象。先说明一点WeakMap 的键必须是对象而 Map 本身是一个对象它是一个构造函数实例所以理论上是可以作为 WeakMap 的键的。可以这样写constweakMapnewWeakMap();consthandler{get(target,prop,receiver){constorigMethodtarget[prop];if(typeoforigMethodfunction){returnfunction(...args){if(propset){console.log(WeakMap 写入操作键:,args[0],值:,args[1]);}elseif(propget){console.log(WeakMap 读取操作键:,args[0]);}returnorigMethod.apply(target,args);};}returnReflect.get(target,prop,receiver);}};constproxyWeakMapnewProxy(weakMap,handler);// 这里用 Map 作为键constmapKeynewMap();proxyWeakMap.set(mapKey,secret);// 控制台输出WeakMap 写入操作键: Map {} 值: secretconsole.log(proxyWeakMap.get(mapKey));// 控制台输出WeakMap 读取操作键: Map {}// 输出secret解释mapKey是一个 Map 实例属于对象类型可以作为 WeakMap 的键。WeakMap 允许任何对象作为键包括普通对象、数组、函数、甚至 Map、Set 等实例。用 Map 作为键完全没问题。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

泰州专业制作网站恩施seo快速排名

Langchain-Chatchat在ESG报告编制中的辅助 在企业可持续发展日益受到监管机构、投资者与公众关注的今天,一份准确、完整且合规的ESG(环境、社会与治理)报告已成为企业非财务信息披露的核心载体。然而,现实中的ESG数据往往散落在年…

张小明 2025/12/26 17:12:20 网站建设

购买营销型网站wordpress响应商城

网页MIDI制作神器:免费在线音乐编辑器让创作触手可及 【免费下载链接】midieditor Provides an interface to edit, record, and play Midi data 项目地址: https://gitcode.com/gh_mirrors/mi/midieditor 还在为复杂的音乐软件安装而烦恼吗?想要…

张小明 2025/12/27 17:40:06 网站建设

产品推广网站哪个好凡客是什么意思

【专业推荐】光缆普查仪(敲缆仪)G-380C - 光纤网络维护的智能之选以成都鼎讯信通科技有限公司的不懈努力为光纤网络的维护工作带来了一款真正的专业级的光缆普查仪-G-380C光缆普查仪。借助其先进的敲击检测技术的这一大幅升级的仪器,不仅能快…

张小明 2025/12/27 17:39:21 网站建设

陕西省城乡住房和建设厅网站郑州网红

Langchain-Chatchat 支持相似问题推荐:提升用户查找效率 在企业知识管理日益复杂的今天,一个常见的场景是:HR部门每天收到数十条“年假怎么申请?”的提问,尽管答案早已写入员工手册。传统知识库系统面对这种高频、多变…

张小明 2025/12/27 14:54:04 网站建设

唐山网站建设报价网站建设数据库的购买

网络编程TCPTCP的核心特点:面向字节流(UDP是数据报),所有的读写的基本单位都是byteServerSocket:专门给服务器使用的,负责连接,不对数据进行操作Socket:服务器和客户端都可以使用当服…

张小明 2025/12/28 2:47:55 网站建设

做平台网站要多久建筑公司企业发展历程

FaceFusion人脸融合支持Alpha通道透明叠加在短视频滤镜、虚拟主播和AI换脸应用层出不穷的今天,用户早已不再满足于“把一张脸粗暴地贴到另一张脸上”。我们经常看到这样的场景:美颜相机一键变身明星脸,但边缘生硬得像纸片贴上去;直…

张小明 2025/12/27 12:13:40 网站建设