ES6 Proxy 用法
语法(MDN链接)
1 | const p = new Proxy(target, handler) |
target
:要使用 Proxy 包装的目标对象(可以是任何类型的对象,包括原生数组,函数,甚至另一个代理)。handler
:一个通常以函数作为属性的对象,各属性中的函数分别定义了在执行各种操作时代理 p 的行为。
捕获器
handler 对象是一个容纳一批特定属性的占位符对象。它包含有 Proxy 的各个捕获器。所有的捕获器是可选的。如果没有定义某个捕获器,那么就会保留源对象的默认行为。下面我会记录所有捕获器的使用方法,部分不标准或已废弃的的方法没有记录在内。
handler.getPrototypeOf
参数:
target
:被拦截的对象
触发条件:
- Object.getPrototypeOf()
- Reflect.getPrototypeOf()
- __proto__
- Object.prototype.isPrototypeOf()
- instanceof
示例:
1 | class A {} |
handler.setPrototypeOf
参数:
target
:被拦截的对象prototype
:对象新的原型或者null
返回值:
true
:修改成功false
:修改失败
触发条件:
- Object.setPrototypeOf()
- Reflect.setPrototypeOf()
示例:
1 | const newProto = {} |
[未完待续 ...]