Proxy在JavaScript ES6中是一种特殊的对象,用于定义基本操作的自定义行为(如属性查找、赋值、枚举、函数调用等)。
Proxy基本语法
const obj = new Proxy(target, handler);
参数说明如下:
target: 被代理对象。它可以是任何类型的对象,包括函数。
handler: 是一个对象,声明了代理target的一些操作,即用于拦截并修改目标对象的某些操作。
obj: 是被代理完成之后返回的对象。
但是当外界每次对obj进行操作时,就会执行handler对象上的一些方法。handler中常用的对象方法如下:
1. get(target, propKey, receiver) //拦截对象属性的读取操作
2. set(target, propKey, value, receiver) //拦截对象属性的赋值操作
3. has(target, propKey) //拦截propKey in target
的操作
4. construct(target, args) //拦截new target(...args)
操作
5. apply(target, object, args) //拦截函数调用操作
6. getOwnPropertyDescriptor(target, propKey) //
拦截Object.getOwnPropertyDescriptor(target, propKey)
,返回属性的描述对象。
7. deleteProperty(target, propKey) //
拦截delete target[propKey]
的操作。