has()
-
has()捕获器会在 in 操作符中被调用。对应的反射 API 方法为 Reflect.has()。
const myTarget = {}; const proxy = new Proxy(myTarget, { has(target, property) { console.log("has()"); return Reflect.has(...arguments); }, }); "foo" in proxy; // has()
- 返回值
has() 必须返回布尔值,表示属性是否存在。返回非布尔值会被转型为布尔值。 - 拦截的操作
property in proxy; property in Object.create(proxy); with(proxy) {(property);} Reflect.has(proxy, property) - 捕获器处理程序参数
target: 目标对象。
property: 引用的目标对象上的字符串属性。 - 捕获器不变式
如果 target.property 存在且不可配置,则处理程序必须返回 false。
如果 target.property 存在且目标对象不可扩展,则处理程序必须返回 false