JS Proxy (代理)

article/2025/9/21 20:37:15

Proxy 对象用于创建一个对象的代理,从而实现基本操作的拦截和自定义(如属性查找、赋值、枚举、函数调用等)。

语法:

const p = new Proxy(target, handler)

参数:

target :

要使用 Proxy 包装的目标对象(可以是任何类型的对象,包括原生数组,函数,甚至另一个代理)。

handler :

一个通常以函数作为属性的对象,各属性中的函数分别定义了在执行各种操作时,代理 p 的行为。


示例

在以下简单的例子中,当对象中不存在属性名时,返回"该对象没有该属性" 。下面的代码以此展示了 set 的使用场景。

当设置对象除了 age 以外的其它值,则弹出异常。下面的代码以此 get 的使用场景。

    //声明一个名为obj的对象var obj = {name: "ZHouMao",age: 18}//示例化一个代理p,代理的对象是objvar p = new Proxy(obj, {//get 属性读取时的操作get(target, prop) {//target 就是 obj 这个对象//prop 是 obj 的属性名if (prop in target) {//如果该属性名存在与该对象中,则返回该属性值return target[prop];} else {//否则返回字符串 "该对象没有该属性"return "该对象没有该属性";}},//set 属性设置时的操作set(target, prop, value) {//target 就是 obj 这个对象//prop 是 obj 的属性名//value 是 要设置的值if (prop === "age") {//如果该属性名是age,则返回修改后的值target[prop] = value;} else {//否则弹出异常内容throw "除年龄外,其它属性不可以更改";}}})

在该示例中,我们在控制台访问对象时,如图:

64ec7af3023a4101868d73ba24460e33.png

我们修改对象的值时,如图:

06478ce702d44abe9586b2315c751799.png

aaf89c2c94cd4f189c792d5a975965ad.png

 可以发现,只有age的值可以修改,当修改name值时会弹出异常!

总结

Proxy 可以帮助我们完成很多事情,例如对数据的处理,对构造函数的处理,对数据的验证,说白了,就是在我们访问对象前添加了一层拦截,可以过滤很多操作,而这些过滤,由你来定义。


http://chatgpt.dhexx.cn/article/t9MmLM9X.shtml

相关文章

Vue proxy代理

proxy代理是解决开发环境中的跨域问题,正式环境的跨域需要使用nginx反向代理或者是后端解决 在vue中实现proxy代理的步骤 在vue中使用proxy进行跨域的原理是:将域名发送给本地的服务器(启动vue项目的服务,比如loclahost:8080)&a…

Proxyee-down的下载与安装教程

Proxyee-down是monkeyWie在Github上的一个开源项目,向作者致敬。 最新版的Proxyee-down为3.12(2018.10更新),因为作者在3.x后的版本中并未发布exe版本,只发布了jar包 所以我们需要在计算机中安装Java环境才能使用Prox…

Proxyee Down简介

以前写过一篇用Proxyee下载百度网盘大文件的文章,后来一直没在用过,现在发现Proxyee出了新版,功能也增加了,所以重新来介绍一下。现在它的Github地址也变了,现在的地址是:https://github.com/proxyee-down-…

C语言 ~运算和运算

读CH378的一些源码&#xff0c;里面有用&~和&两种运算&#xff0c;这里记录一下这两种运算的结果 程序源码 /* C语言测试程序 */#include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdint.h>int main() {uint16_t m 10…

c语言中!与~的区别

编译器信息还不知道怎么看。 在我电脑和手机的GCC环境中 !: 代表值得取反&#xff0c;对于整形变量&#xff0c;只要不为0&#xff0c;使用 ! 取反都是0&#xff0c;0取反就是1。就像 bool 只有真假一样。 ~: 代表位的取反&#xff0c;对于整形变量&#xff0c;对每一个二进制…

C语言标识符之——“~“

"~" : 对一个数的二进制按位取反 例如&#xff1a; a 0时&#xff0c;~a -1&#xff1b; a的原码 &#xff1a;00000000000000000000000000000000 ~a的补码 &#xff1a;11111111 11111111 11111111 11111111 - 补码 ~a的反码 &#xff1a;11111111111111111…

情人节必备表白代码

效果图 放大后满满的"我爱你"! 代码 pip3 install Pillow #安装依赖包Pillowfrom PIL import Image, ImageDraw, ImageFont import sys #判断参数个数&#xff0c;可以不要 import os #判断文件是否存在&#xff0c;可以不要image_path "test.jpg" fo…

520之表白代码

版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/qq_42680327 今天是一个好日子,2019年5月20日,表白的最佳时机,今天突然之间闲来无事,写了个告白程序,或许是内心的躁动吧,自己虽然是用不上了,但是还是希望与众多的单身族分享一下。废话不…

520表白代码

女朋友生日快乐代码—>>>html生日快乐代码 html表白代码大全—>>>html表白代码大全 个人主页地址&#xff1a;皮小孩的个人主页 很多朋友想几个代码组合在一起&#xff0c;于是我做了这个效果。中间是爱心包围的照片&#xff08;照片可以换多张&#xff09;…

高端表白vbs

高端表白VBS 这个表白vbs可以生成心形&#xff0c;没有套路可以放心使用。 代码如下&#xff1a; Set Seven WScript.CreateObject("WScript.Shell") msgbox"我爱你&#xff01;" seven.Run "notepad",3 WScript.Sleep 1000 seven.SendKeys &…

vbs表白文件

看抖音上什么vbs停火&#xff0c;就自己稍微看了看&#xff0c;万一以后又用了。。。。。&#xff0c;都知道怎么用吧&#xff0c;把下面代码粘贴复制到新建的txt文件里&#xff0c;然后更改后缀名为vbs&#xff0c;之后点击就可以了&#xff0c;效果自己试&#xff08;表白必备…

中国十大可行性研究报告公司

可行性研究报告是从事一种经济活动&#xff08;投资&#xff09;之前&#xff0c;双方要从经济、技术、生产、供销直到社会各种环境、法律等各种因素进行具体调查、研究、分析&#xff0c;确定有利和不利的因素、项目是否可行&#xff0c;估计成功率大小、经济效益和社会效果程…

软件工程可行性研究报告

实验的背景与要求 图书馆图书借阅管理系统的开发背景介绍&#xff1a;早期的学校图书馆使用传统的卡片来管理所有的图书和读者信息&#xff0c;随着计算机对管理工作的逐步普及&#xff0c;需要开发一套图书馆图书借阅信息管理系统&#xff0c;使用计算机来对图书馆的图书借阅情…

可行性研究、需求分析

可行性研究 五个方面讨论&#xff1a;1.经济可行性 2.技术可行性 3.操作可行性 4.法律可行性 5.时间可行性 问题的识别&#xff1a;了解已解决的问题&#xff0c;这些问题是如何提出的&#xff1b;如何解决才能满足要求&#xff1b;了解问题结构。 市场调查&#xff1a;了解…

可行性研究报告模板

表格版 可行性研究报告的表格版如下&#xff1a; 文档版 参考了&#xff1a;https://blog.csdn.net/topz_share/article/details/117381322 &#xff0c;如有侵权&#xff0c;请联系本人删除&#xff01; 什么是可行性研究报告&#xff1f; 可行性分析报告&#xff1a;说明…

软件工程 可行性分析与需求分析

参考链接&#xff1a; &#xff08;1&#xff09;【必看&#xff01;&#xff01;&#xff01;】系统需求分析与可行性分析&#xff08;System Requirement Analysis and Feasibility Analysis&#xff09; https://blog.csdn.net/qq_38262266/article/details/86588707 &#…

可行性研究报告

1.引言 目前&#xff0c;随着学生自主学习意识的不断提高&#xff0c;课堂上的知识已经满足不了他们&#xff0c;需要借助网络化来开阔眼界&#xff0c;增长见识&#xff1b;其次也需要为紧张的学习生活缓解压力&#xff0c;放松心情&#xff1b;最后也为同学们提供了一个面向世…

软件工程的可行性分析

什么是可行性分析&#xff1f;为什么要进行可行性分析&#xff1f;可行性分析的主要任务是什么&#xff1f;可行性分析有哪些主要过程&#xff1f;如何去评估提出的可行性方案&#xff1f;进行可行性分析时常用的工具有哪些&#xff1f;可行性分析报告的内容要求和写法说明 1、…

可行性分析与需求分析

目录 可行性分析 可行性分析目的&#xff1a; 经济可行性&#xff1a; 技术可行性&#xff1a; 社会可行性&#xff1a; 需求分析&#xff1a; 非功能需求&#xff1a; 需求分析常用的方法&#xff1a; 结构化分析方法&#xff1a; 结构化分析方法&#xff1a; 结构化分…

可行性分析报告-学生信息管理系统

1、引言 1.1编写目的 编写本可行性研究报告的目的是为了更好的管理学生们的学籍信息&#xff0c;了解学生们的相关情况&#xff0c;为管理学生学习和生活进行指导&#xff0c;为学校的统一管理系统奠定基础。通过对学生学籍管理系统项目进行一系列的详细调查研究&#xff0c;明…