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 "除年龄外,其它属性不可以更改";}}})

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

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

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

总结

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

JS Proxy (代理)相关推荐

  1. vue.config.js配置proxy代理解决跨越;proxy代理报404;

    像我们本地的vue项目运行起来,访问的地址一般是localhost,这个时候请求后台的接口,端口号也不一致,肯定就会存在跨域问题,所以我们要是想正常访问接口的话,就需要解决掉跨域问题. 本文我们是在v ...

  2. vue跨域问题:proxy代理跨域

    前端跨域,本地跨域,vue项目跨域问题 疑问1: 前端开发中解决浏览器的跨域问题 (推荐阅读) 什么是跨域? 为什么要跨域? 解决"跨域"的五种常见方式: 1. JSONP 2. ...

  3. vue-cli、脚手架创建、eslint、alias别名配置、proxy代理配置、axios、scoped、穿透、媒体查询、12栅格、动态rem、1px边框、移动端事件、300ms延迟问题(六)

    vue-cli的使用 现在使用前端工程化开发项目是主流的趋势,也就是说,我们需要使用一些工具来搭建vue的开发环境.一般情况下我们都会选择使用webpack进行项目的构建,在这里我们直接使用vue官方 ...

  4. webpack的proxy代理配置

    webpack的proxy代理配置 在实际项目中不可避免会遇到跨越问题,webpack中的proxy就是解决前端跨域的方法之一. 跨越问题:协议.域名.端口 三者只要有一个与服务端的不一致,就会报跨域 ...

  5. proxy代理报错: Uncaught (in promise) Error: Request failed with status code 500

    POST http://localhost:8013/check/login 500 (Internal Server Error) createError.js:16 Uncaught (in pr ...

  6. 双向绑定 / proxy 代理 整理

    class Vue {constructor(el, data) {this.el = document.querySelector(el)this.data = datathis.domPool = ...

  7. http proxy 代理

    配合webpack 和 webpack-dev-server处理 安装 // 安装 cnpm html-webpack-plugin --save -D cnpm install webpack we ...

  8. axios请求与proxy代理配置

    如果是不考虑跨域问题,那么请求后台数据使用的就是该路径.但是根据同源策略,3000端口(前端页面端口)无法访问5000端口(后台数据端口),此时就需要使用proxy代理配置了. /** * 获取所有的 ...

  9. webpack-dev-server实现静态资源加载和proxy代理

    文章目录 webpack专辑 webpack Dev Server 配置选项 1.静态资源访问 2.Proxy 代理 小结 webpack专辑 如何使用webpack实现模块化打包? 如何通过Load ...

  10. proxy代理的使用(解决跨域,配置多个代理)

    proxy代理的使用(解决跨域,配置多个代理) 一.什么是代理 字面意思就是类似中间商,开启代理,原理就是在本地创建一个虚拟服务器,发送请求数据,同时接受请求的数据, 利用服务器与服务器间,交互,不会 ...

最新文章

  1. 浅谈DCIM平台的6化
  2. 关于JAVA中URL传递中文参数,取值是乱码的解决办法
  3. 事物 @Transactional
  4. 反转二叉树 java_leetcode刷题笔记-226. 翻转二叉树(java实现)
  5. python对数组缺失值进行填充
  6. 有效缓解腰部不适,十星小双鱼腰部按摩器上手体验
  7. 邓白氏编码申请经验分享
  8. DELL服务器硬件报错及对应的解决方法(R710)
  9. 【原】计算机Tools vs 学习资料
  10. DNSPod十问王安:中小企业的数字化是伪命题吗?
  11. GitHub爆款项目,去马赛克软件Depix使用
  12. 网页前端设计-作业三(JavaScript)
  13. 全国优秀计算机动画作品,全国“xx杯”计算机应用基础类说课大赛优秀作品:同步动画教学课件.pptx...
  14. AtCoder Beginner Contest 192 A~D题解
  15. 老司机 iOS 周报 #36 | 2018-09-17
  16. Teradata天睿公司将于5月举办国内最大规模大数据峰会
  17. MYSQL:2022
  18. android 横向滚动选择,简单实现自定义横向滚动选择View
  19. 投资热点转向蓝筹股?简直是胡说八道!
  20. python关于矩阵的基本程序知识——使用Sympy模块

热门文章

  1. 物流运交管理系统 货运单管理
  2. 集线器、交换机、路由器有什么区别?
  3. 【实用工具】Visio画时序图组件
  4. @程序员,对抗 996,你真的准备好了吗?
  5. 操作电脑时间长,眼睛疲劳怎么办?
  6. HTTPS/HTTP
  7. Android 系统时间自动更新机制--解决 “时间和日期不准确“
  8. Java中三种代理方式—— 静态代理与两种动态代理的实现机制
  9. java技术学习交流群,诚邀您的加入
  10. 项目中的风险有哪些?测试人员或者管理者如何控制风险?