摘要:用于修改某些操作的默认行为,用来代理有些行为。的行为参数表示所要拦截的目标对象,参数也是一个队形,用来拦截行为。拦截对象属性的设置拦截的操作,返回一个布尔值拦截的操作,返回一个布尔值。拦截,返回一个布尔值拦截,返回一个布尔值。
Proxy用于修改某些操作的默认行为,用来代理有些行为。
ES6的行为:target参数表示所要拦截的目标对象,handler参数也是一个队形,用来拦截行为。
</>复制代码
var proxy = new Proxy(target, hander);
Proxy的对象的方法
1.get(target, propKey, receiver)
</>复制代码
拦截对象属性的读取,最后一个receiver是一个对象,可选。
2.set(target, propKey, value, receiver)
</>复制代码
拦截对象属性的设置
3.has(target, propKey)
</>复制代码
拦截propKey in proxy的操作,返回一个布尔值
4.deleteProperty(target, propKey)
</>复制代码
拦截delete proxy[propKey]的操作,返回一个布尔值。
5.ownKeys(target)
</>复制代码
拦截Object.getOwnPropertyNames(proxy)、Object.getOwnPropertySymbols(proxy)、Object.keys(proxy)返回一个数组
6.getOwnPropertyDescriptor(target, propKey)
</>复制代码
拦截Object.getOwnPropertyDescriptor(proxy, propKey),返回属性的描述对象。
7.defineProperty(target, propKey, propDesc)
</>复制代码
拦截Object.defineProperty(proxy, propKey, propDesc)、Object.defineProperties(proxy, propDescs),返回一个布尔值
8.preventExtensions(target)
</>复制代码
拦截Object.preventExtensions(proxy),返回一个布尔值。
9.getPrototypeOf(target)
</>复制代码
拦截Object.getPrototypeOf(proxy),返回一个对象。
10.isExtensible(target)
</>复制代码
拦截Object.isExtensible(proxy),返回一个布尔值
11.setPrototypeOf(target, proto)
</>复制代码
拦截Object.setPrototypeOf(proxy, proto),返回一个布尔值
12.apply(target, object, args)
</>复制代码
拦截 Proxy 实例作为函数调用的操作,比如proxy(...args)、proxy.call(object, ...args)、proxy.apply(...)。
13.construct(target, args)
</>复制代码
拦截 Proxy 实例作为构造函数调用的操作,比如new proxy(...args)。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/82033.html
摘要:理解元编程和是属于元编程范畴的,能介入的对象底层操作进行的过程中,并加以影响。元编程中的元的概念可以理解为程序本身。中,便是两个可以用来进行元编程的特性。在之后,标准引入了,从而提供比较完善的元编程能力。 导读 几年前 ES6 刚出来的时候接触过 元编程(Metaprogramming)的概念,不过当时还没有深究。今天在应用和学习中不断接触到这概念,比如 mobx 5 中就用到了 Pr...
摘要:拦截实例作为构造函数调用的操作,比如。方法等同于,这提供了一种不使用,来调用构造函数的方法。方法对应,返回一个布尔值,表示当前对象是否可扩展。这是的一个提案,目前转码器已经支持。别名或修饰器在控制台显示一条警告,表示该方法将废除。 Proxy Proxy 这个词的原意是代理,用在这里表示由它来代理某些操作,可以译为代理器,即用自己的定义覆盖了语言的原始定义。ES6 原生提供 Proxy...
摘要:即必须有返回值其中可接受三个参数,为目标对象,为属性名,为实际接受的对象,默认为本例中新建的,如果单独指出一个对象,可使指出对象受到相同的方法作用。且中的必须有返回值,的不用,这也正是因为在他之后还会执行所以不需要。 ES6 Proxy/Reflect Proxy 拦截器 proxy是es6的新特性,简单来讲,即是对目标对象的属性读取、设置,亦或函数调用等操作进行拦截(处理)。 let...
摘要:代理和反射的定义调用可常见代替其它目标对象的代理,它虚拟化了目标,所以二者看起来功能一致。代理可拦截引擎内部目标的底层对象操作,这些底层操作被拦截后会触发响应特定操作的陷阱函数。 代理和反射的定义 调用 new Proxy() 可常见代替其它目标 (target) 对象的代理,它虚拟化了目标,所以二者看起来功能一致。 代理可拦截JS引擎内部目标的底层对象操作,这些底层操作被拦截后会触发...
摘要:存取描述符同时具有以下可选键值一个给属性提供的方法,如果没有则为。该方法返回值被用作属性值。值得注意的是属性描述符必须是数据描述符或者存取描述符两种形式之一,不能同时是两者。可以忽略方法的返回值。 前言 我们或多或少都听过数据绑定这个词,数据绑定的关键在于监听数据的变化,可是对于这样一个对象:var obj = {value: 1},我们该怎么知道 obj 发生了改变呢? define...
阅读 1476·2021-11-22 14:44
阅读 2593·2021-09-30 09:47
阅读 1375·2021-09-09 11:56
阅读 2264·2021-09-08 09:45
阅读 4362·2021-08-31 09:40
阅读 1392·2019-08-30 15:52
阅读 2185·2019-08-30 14:09
阅读 1764·2019-08-26 17:04