适用范围:

梗概:

  1. 每一个对象, 都可以用Proxy类创建一个与之对应的代理对象
    1. 代理对象的属性和实际对象的属性是双向同步
  2. 通过代理对象操作里面的属性, 会调用对应的回调函数
    1. 比如proxy实例.name='dio', 会调用传入的set()方法
    2. 比如proxy实例.word, 会调用传入的get()方法
    3. 这时候就可以截取各种数据操作, 然后执行对应的响应
      1. 还可以用Reflect类方法来操纵实际对象的属性
      2. 当然, 也可以直接通过传入回调函数实际对象参数, 修改实际对象

语法:

1. 详细的原文:

handler.set() - JavaScript | MDN

2. 创建Proxy的实例:

let handler = {//用来存放多个回调函数,回调函数的名字必须是特定的
	//...
}
let proxy实例 = new Proxy(实际对象,handler)

3. 回调函数:

回调函数中, 最重要的是三个: set(), get(), deleteProperty() 对应了属性的增删改查

  1. child::Proxy实例的 set回调函数
  2. child::Proxy实例的 get回调函数
  3. child::Proxy实例的 deleteProperty回调函数