javascript基础从小白到高手系列六十二:getPrototypeOf()

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()

  1. 返回值
    getPrototypeOf()必须返回对象或null。
  2. 拦截的操作
     Object.getPrototypeOf(proxy)
     Reflect.getPrototypeOf(proxy)
     proxy.proto
     Object.prototype.isPrototypeOf(proxy)
     proxy instanceof Object
  3. 捕获器处理程序参数
     target:目标对象。
  4. 捕获器不变式
    如果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()
  5. 返回值
    setPrototypeOf()必须返回布尔值,表示原型赋值是否成功。返回非布尔值会被转型为布尔值。
  6. 拦截的操作
     Object.setPrototypeOf(proxy)
     Reflect.setPrototypeOf(proxy)
  7. 捕获器处理程序参数
     target:目标对象。
     prototype:target 的替代原型,如果是顶级原型则为null。
  8. 捕获器不变式
    如果target 不可扩展,则唯一有效的prototype 参数就是Object.getPrototypeOf(target)
    的返回值。
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值