getPrototypeOf()捕获器会在Object.getPrototypeOf()中被调用。对应的反射API 方法为
Reflect.getPrototypeOf()。
const myTarget = {};
const proxy = new Proxy(myTarget, {
getPrototypeOf(target) {
console.log(‘getPrototypeOf()’);
return Reflect.getPrototypeOf(…arguments)
}
});
Object.getPrototypeOf(proxy);
// getPrototypeOf()
- 返回值
getPrototypeOf()必须返回对象或null。 - 拦截的操作
Object.getPrototypeOf(proxy)
Reflect.getPrototypeOf(proxy)
proxy.proto
Object.prototype.isPrototypeOf(proxy)
proxy instanceof Object - 捕获器处理程序参数
target:目标对象。 - 捕获器不变式
如果target 不可扩展,则Object.getPrototypeOf(proxy)唯一有效的返回值就是Object.
getPrototypeOf(target)的返回值。
9.2.9 setPrototypeOf()
setPrototypeOf()捕获器会在Object.setPrototypeOf()中被调用。对应的反射API 方法为
Reflect.setPrototypeOf()。
const myTarget = {};
const proxy = new Proxy(myTarget, {
setPrototypeOf(target, prototype) {
console.log(‘setPrototypeOf()’);
return Reflect.setPrototypeOf(…arguments)
}
});
Object.setPrototypeOf(proxy, Object);
// setPrototypeOf() - 返回值
setPrototypeOf()必须返回布尔值,表示原型赋值是否成功。返回非布尔值会被转型为布尔值。 - 拦截的操作
Object.setPrototypeOf(proxy)
Reflect.setPrototypeOf(proxy) - 捕获器处理程序参数
target:目标对象。
prototype:target 的替代原型,如果是顶级原型则为null。 - 捕获器不变式
如果target 不可扩展,则唯一有效的prototype 参数就是Object.getPrototypeOf(target)
的返回值。