JavaScript Proxy 对象
- Proxy
- Proxy对象用于定义基本操作的自定义行为(如属性查找,赋值,枚举,函数调用等)。术语handler包含陷阱(traps)的占位符对象。traps提供属性访问的方法。这类似于操作系统中捕获器的概念。target代理虚拟化的对象。它通常用作代理的存储后端。根据目标验证关于对象不可扩展性或不可配置属性的
- Proxy.revocable()
- Proxy.revocable()方法可以用来创建一个可撤销的代理对象。语法Proxy.revocable(target, handler);target用Proxy包装的目标对象(可以是任何类型的对象,包括原生数组,函数,甚至另一个代理)。handler一个对象,其属性是当执行一个操作时定义代理的
- handler.get()
- handler.get()方法用于拦截对象的读取属性操作。语法var p = new Proxy(target,{get: function(target, property, receiver){}});参数以下是传递给get方法的参数,this上下文绑定在handler对象上.target目标对
- handler.set()
- andler.set()方法用于拦截设置属性值的操作语法var p = new Proxy(target,{set: function(target, property, value, receiver){}});参数以下是传递给set方法的参数,this上下文绑定在handler对象上.targe
- handler.defineProperty()
- handler.defineProperty()用于拦截对对象的Object.defineProperty()操作。语法var p = new Proxy(target,{defineProperty: function(target, property, descriptor){}});参数下列参
- handler.deleteProperty()
- handler.deleteProperty()方法用于拦截对对象属性的delete操作。语法var p = new Proxy(target,{deleteProperty: function(target, property){}});参数deleteProperty方法将会接受以下参数。thi
- handler.has()
- handler.has()方法是针对in操作符的代理方法。语法var p = new Proxy(target,{has: function(target, prop){}});参数下面是传递给 has方法的参数.this is bound to the handler.target目标对象.pro
- handler.apply()
- handler.apply()方法用于拦截函数的调用。语法var p = new Proxy(target,{apply: function(target, thisArg, argumentsList){}});参数以下是传递给apply方法的参数,this上下文绑定在handler对象上.tar
- handler.ownKeys()
- handler.ownKeys()方法用于拦截Reflect.ownKeys().语法var p = new Proxy(target,{ownKeys: function(target){}});参数下面的参数被传递给ownKeys。this被绑定在handler上。target目标对象.返回值o
- handler.getOwnPropertyDescriptor()
- handler.getOwnPropertyDescriptor()方法是Object.getOwnPropertyDescriptor()的钩子。语法var p = new Proxy(target,{getOwnPropertyDescriptor: function(target, prop)
- handler.isExtensible()
- handler.isExtensible()方法用于拦截对对象的Object.isExtensible()。语法var p = new Proxy(target,{isExtensible: function(target){}});参数下列参数将会被传递给isExtensible方法。 this
- handler.preventExtensions()
- handler.preventExtensions()方法用于设置对Object.preventExtensions()的拦截语法var p = new Proxy(target,{preventExtensions: function(target){}});参数以下参数传递给preventExt
- handler.getPrototypeOf()
- handler.getPrototypeOf()是一个代理方法,当读取代理对象的原型时,该方法就会被调用。语法var p = new Proxy(obj,{getPrototypeOf(target){...}});参数当getPrototypeOf方法被调用时,this指向的是它所属的处理器对象。
- handler.setPrototypeOf()
- handler.setPrototypeOf()方法主要用来拦截Object.setPrototypeOf().语法var p = new Proxy(target,{setPrototypeOf: function(target, prototype){}});参数以下参数传递给setProtot
- handler.construct()
- handler.construct()方法用于拦截new操作符.为了使new操作符在生成的Proxy对象上生效,用于初始化代理的目标对象自身必须具有[[Construct]]内部方法(即new target必须是有效的)。语法var p = new Proxy(target,{construct: