基础概念
proxy代理,顾名思义,可以代理一个对象。
然后可以拦截对象上的一些操作,产生副作用等。(实现响应式)
定义一个代理:
const p = new Proxy(target, handler)
- target:代理的对象(目标对象)
- handler:各种函数,行为捕捉器
其中target可以是函数,可以通过代理,修改函数的功能,而不影响原函数。
创建可撤销的proxy对象
Proxy.revocable()
Proxy代理是ES6新增特性,也是Vue3大部分的响应式实现原理
handler常用方法介绍
get
handler.get(target, property, receiver)
- target: 目标对象
- property: 被获取的属性名
- receiver: proxy或继承proxy的对象
用于拦截读取属性操作
has
has(target, prop)
prop: 需要检查的属性
返回boolean值
用于拦截属性查询 in
set
set(target, prop, value, receiver)
prop: 将被设置的属性名
value: 新属性值
receiver: 最初被调用的对象,通常是proxy本身
返回Boolean值,true代表设置成功
应用场景
- 不改变原函数,对代理进行功能修改
- 捕获对象值的一些操作