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对象上.targe
- handler.set()
- andler.set()方法用于拦截设置属性值的操作语法var p = new Proxy(target, { set: function(target, property, value, receiver) { }});参数以下是传递给set方法的参数,this上下文绑定在handler对象上.t
- 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方法将会接受以下参数
- handler.has()
- handler.has()方法是针对in操作符的代理方法。语法var p = new Proxy(target, { has: function(target, prop) { }});参数下面是传递给 has方法的参数.this is bound to the handler.target目标对象
- handler.apply()
- handler.apply()方法用于拦截函数的调用。语法var p = new Proxy(target, { apply: function(target, thisArg, argumentsList) { }});参数以下是传递给apply方法的参数,this上下文绑定在handler对象上
- handler.ownKeys()
- handler.ownKeys()方法用于拦截Reflect.ownKeys().语法var p = new Proxy(target, { ownKeys: function(target) { }});参数下面的参数被传递给ownKeys。this被绑定在handler上。target目标对象.
- handler.getOwnPropertyDescriptor()
- handler.getOwnPropertyDescriptor()方法是Object.getOwnPropertyDescriptor()的钩子。语法var p = new Proxy(target, { getOwnPropertyDescriptor: function(target, pro
- handler.isExtensible()
- handler.isExtensible()方法用于拦截对对象的Object.isExtensible()。语法var p = new Proxy(target, { isExtensible: function(target) { }});参数下列参数将会被传递给isExtensible方法。 t
- handler.preventExtensions()
- handler.preventExtensions()方法用于设置对Object.preventExtensions()的拦截语法var p = new Proxy(target, { preventExtensions: function(target) { }});参数以下参数传递给preven
- 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) { }});参数以下参数传递给setPr
- handler.construct()
- handler.construct()方法用于拦截new操作符.为了使new操作符在生成的Proxy对象上生效,用于初始化代理的目标对象自身必须具有[[Construct]]内部方法(即new target必须是有效的)。语法var p = new Proxy(target, { construct
