第九章:代理与反射

第九章:代理与反射

9.1 代理基础

  • 代理是目标对象的抽象

9.1.1 创建空代理

const target = {
    id: "target"
};

const handler = {};

const proxy = new Proxy(target, handler);

console.log(proxy.id);              // target

proxy.id = "foo";
console.log(target.id);             // foo
console.log(proxy.id);              // foo

// Proxy.prototype 是 undefined

console.log(target === proxy);      // false

9.1.2 定义捕获器

const target = {
    id: "target"
};

const handler = {
    get() {
        return "handler override";
    }
};

const proxy = new Proxy(target, handler);
console.log(proxy.id);      // handler override

9.1.3 捕获器参数和反射 API

  • get(trapTarget, property, receiver)
    • trapTarget:目标对象
    • property:要查询的属性
    • receiver:代理对象
  • Reflact全局对象
const handler = {
    get() {
        return Reflact.get(...arguments);
    }
};

9.1.4 捕获器不变式


9.1.5 可撤销代理

const { proxy, revoke } = Proxy.revocable(target, handler);
revoke();

9.1.6 实用反射 API

  • p271(第四版)

9.1.7 代理另一个代理


9.1.8 代理的问题与不足

1. 代理中的 this

2. 代理与内部槽位
  • Date类型

9.2 代理捕获器与反射方法

  • p275(第四版)

9.3 代理模式

9.3.1 跟踪属性访问


9.3.2 隐藏属性


9.3.3 验证属性


9.3.4 函数与构造函数参数验证


9.3.5 数据绑定和可观察对象


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值