proxy代理

基础概念

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代表设置成功

应用场景

  • 不改变原函数,对代理进行功能修改
  • 捕获对象值的一些操作
posted @ 2023-01-29 16:38  一个斯帕纳  阅读(122)  评论(0)    收藏  举报