Proxy代理的作用
Proxy代理的作用:
Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。
Proxy可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以译为“代理器”。
ES6 原生提供 Proxy 构造函数,用来生成 Proxy 实例。
var proxy = new Proxy(target, handler);
Proxy 对象的所有用法,都是上面这种形式,不同的只是handler参数的写法。其中,new Proxy()表示生成一个Proxy实例,target参数表示所要拦截的目标对象,handler参数也是一个对象,用来定制拦截行为
一个技巧是将 Proxy 对象,设置到object.proxy属性,从而可以在object对象上调用。
get方法用于拦截某个属性的读取操作。下面是一个拦截读取操作的例子。
var person = {name: "张三"
};var proxy = new Proxy(person, {get: function(target, property) {if (property in target) {return target[property];} else {throw new ReferenceError("Property \"" + property + "\" does not exist.");}}
});proxy.name // "张三"
proxy.age // 抛出一个错误
- set方法用来拦截某个属性的赋值操作。
let validator = {set: function(obj, prop, value) {if (prop === 'age') {if (!Number.isInteger(value)) {throw new TypeError('The age is not an integer');}if (value > 200) {throw new RangeError('The age seems invalid');}}// 对于age以外的属性,直接保存obj[prop] = value;}
};let person = new Proxy({}, validator);person.age = 100;person.age // 100
person.age = 'young' // 报错
person.age = 300 // 报错
- apply方法拦截函数的调用、call和apply操作。apply方法可以接受三个参数,分别是目标对象、目标对象的上下文对象(this)和目标对象的参数数组。
var twice = {apply (target, ctx, args) {return Reflect.apply(...arguments) * 2;}
};
function sum (left, right) {return left + right;
};
var proxy = new Proxy(sum, twice);proxy(1, 2) // 6proxy.call(null, 5, 6) // 22
proxy.apply(null, [7, 8]) // 30
Proxy代理的作用相关推荐
- Proxy(代理) ARP作用及原理
概述:代理ARP是ARP协议的一个变种.对于没有配置缺省网关的计算机要和其他网络中的计算机实现通信,网关收到源计算机的 ARP 请求会使用自己的 MAC 地址与目标计算机的 IP地址对源计算机进行应答 ...
- 第十二节:ES6 Proxy代理 和 去银行存款有什么关系?
ES:给开发者提供了一个新特性:Proxy,就是代理的意思.也就是我们这一节要介绍的知识点. 以前,ATM还没有那么流行的时候(暴露年纪),我们去银行存款或者取款的时候,需要在柜台前排队,等柜台工作人 ...
- nginx Proxy 代理
1.代理原理 反向代理产生的背景: 在计算机世界里,由于单个服务器的处理客户端(用户)请求能力有一个极限,当用户的接入请求蜂拥而入时,会造成服务器忙不过来的局面,可以使用多个服务器来共同分担成千上万的 ...
- webpack-dev-server实现静态资源加载和proxy代理
文章目录 webpack专辑 webpack Dev Server 配置选项 1.静态资源访问 2.Proxy 代理 小结 webpack专辑 如何使用webpack实现模块化打包? 如何通过Load ...
- 011_掩藏真实ip,使用proxy代理
proxy代理的使用 """ 代理分类:1.透明代理:被访问服务器,知道这是一个代理,并且知道我们自身真实的ip2.匿名代理:被访问服务器,知道这是一个代理,但不知道我们 ...
- 什么是nginx?什么是nginx的反向代理和正向代理又是什么?nginx反向代理的作用?
1. nginx 1.1 nginx简介 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄 ...
- Proxy 代理模式 对象结构型模式
1.意图 为其它对象提供一种代理以控制对这个对象的访问. 2.别名 Surrogate 3.动机 对一个对象进行访问控制的一个原因是为了只有在我们确实需要这个对象时才对它进行创建和初始化.我们考虑一个 ...
- Proxy代理 和 Reflect反射(反射的是obj)的概念
1. Proxy代理 // 供应商(原始对象)let obj = {time:'2018-01-03',name:'net',_r: "123"}// 创建代理商,传入obj数据l ...
- es6的Proxy(代理)
es6的Proxy(代理) Proxy可以监听对象身上发生了什么事情,并在这些事情发生后执行一些相应的操作.一下子让我们对一个对象有了很强的追踪能力,同时在数据绑定方面也很有用处 //代理: var ...
最新文章
- 一文讲透非标品的商品类目设计
- OpenStack从入门到放弃
- 【CodeForces - 633D】Fibonacci-ish (离散化,暴力枚举+STPmap,fib数列收敛性质)
- python剑指offer面试题_剑指offer面试题Q10 斐波那契数列 python解法
- 2008年小结,我想,我就从这里开始
- 特斯拉上市十年回报率高达12倍,马斯克做对了什么?
- Python+OpenGL实现物体快速运动时的模糊效果
- java 判断ip和port是否存活_java判断IP和端口号是否可以访问
- C#ORM系统 Moon.ORM使用方法
- Attention Please
- 了解人工智能与智能系统中的先驱人物
- 基于遗传算法车辆路径问题(VRP)
- 打印日历Java代码实现
- nonebot2插件之主持飞花令
- 线段树入门(线段懵逼树、加了一些解释,丰富了一下内容)
- 关于影响力章节的读后感:第二章
- Android 开发之初识 Android
- Windows环境,agent在后台运行
- 多个moudle混淆配置问题
- 弘辽科技:拼多多新手该如何提升直通车权重?