适用范围:
梗概:
- 每一个对象, 都可以用Proxy类创建一个与之对应的代理对象
- 代理对象的属性和实际对象的属性是双向同步的
- 通过代理对象操作里面的属性, 会调用对应的回调函数
- 比如
proxy实例.name='dio'
, 会调用传入的set()
方法 - 比如
proxy实例.word
, 会调用传入的get()
方法 - 这时候就可以截取各种数据操作, 然后执行对应的响应
- 还可以用Reflect类方法来操纵实际对象的属性
- 当然, 也可以直接通过传入回调函数的实际对象参数, 修改实际对象
- 比如
语法:
1. 详细的原文:
handler.set() - JavaScript | MDN
2. 创建Proxy的实例:
let handler = {//用来存放多个回调函数,回调函数的名字必须是特定的
//...
}
let proxy实例 = new Proxy(实际对象,handler)
3. 回调函数:
回调函数中, 最重要的是三个: set(), get(), deleteProperty() 对应了属性的增删改查
- child::Proxy实例的 set回调函数
- child::Proxy实例的 get回调函数
- child::Proxy实例的 deleteProperty回调函数