set()
- set()捕获器 会在设置属性值的操作中被调用。对应的反射 API 方法为 Reflect.set()。
const myTarget = {}; const proxy = new Proxy(myTarget, { set(target, property, receiver) { console.log("get()"); return Reflect.set(...arguments); }, }); proxy.foo = "bar"; // set()
- 返回值
返回 true 表示成功;返回 false 表示失败,严格模式下会抛出 TypeError。 - 拦截的操作
proxy.property = value; proxy[property] = value; Object.create(proxy)[property] = value; Reflect.set(proxy, property, value,receiver) - 捕获器处理程序参数
target: 目标对象。
property: 引用的目标对象上面的字符串属性。
value: 要赋给属性的值。
receiver: 接收最初赋值的对象。 - 捕获器不变式
如果 target.property 不可写且不可配置,则不能修改目标属性的值
如果 target.property 不可配置且[[set]]特性为 undefined, 则不能修改目标属性的值。在严格模式下,处理程序中返回 false 会抛出 TypeError