isExtensible()捕获器会在Object.isExtensible()中被调用。对应的反射API 方法为
Reflect.isExtensible()。
const myTarget = {};
const proxy = new Proxy(myTarget, {
isExtensible(target) {
console.log(‘isExtensible()’);
return Reflect.isExtensible(…arguments)
}
});
Object.isExtensible(proxy);
// isExtensible()
- 返回值
isExtensible()必须返回布尔值,表示target 是否可扩展。返回非布尔值会被转型为布尔值。 - 拦截的操作
Object.isExtensible(proxy)
Reflect.isExtensible(proxy) - 捕获器处理程序参数
target:目标对象。 - 捕获器不变式
如果target 可扩展,则处理程序必须返回true。
如果target 不可扩展,则处理程序必须返回false。
preventExtensions()
preventExtensions()捕获器会在Object.preventExtensions()中被调用。对应的反射API
方法为Reflect.preventExtensions()。
const myTarget = {};
const proxy = new Proxy(myTarget, {
preventExtensions(target) {
console.log(‘preventExtensions()’);
return Reflect.preventExtensions(…arguments)
}
});
Object.preventExtensions(proxy);
// preventExtensions() - 返回值
preventExtensions()必须返回布尔值,表示target 是否已经不可扩展。返回非布尔值会被转
型为布尔值。 - 拦截的操作
Object.preventExtensions(proxy)
Reflect.preventExtensions(proxy) - 捕获器处理程序参数
target:目标对象。 - 捕获器不变式
如果Object.isExtensible(proxy)是false,则处理程序必须返回true。