Proxy用于修改某些操做的默认行为,用来代理有些行为。
ES6的行为:target参数表示所要拦截的目标对象,handler参数也是一个队形,用来拦截行为。数组
var proxy = new Proxy(target, hander);
Proxy的对象的方法
1.get(target, propKey, receiver)app
拦截对象属性的读取,最后一个receiver是一个对象,可选。
2.set(target, propKey, value, receiver)函数
拦截对象属性的设置
3.has(target, propKey)代理
拦截propKey in proxy的操做,返回一个布尔值
4.deleteProperty(target, propKey)code
拦截delete proxy[propKey]的操做,返回一个布尔值。
5.ownKeys(target)对象
拦截Object.getOwnPropertyNames(proxy)、Object.getOwnPropertySymbols(proxy)、Object.keys(proxy)返回一个数组
6.getOwnPropertyDescriptor(target, propKey)ip
拦截Object.getOwnPropertyDescriptor(proxy, propKey),返回属性的描述对象。
7.defineProperty(target, propKey, propDesc)get
拦截Object.defineProperty(proxy, propKey, propDesc)、Object.defineProperties(proxy, propDescs),返回一个布尔值
8.preventExtensions(target)io
拦截Object.preventExtensions(proxy),返回一个布尔值。
9.getPrototypeOf(target)event
拦截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)。