proxy原理

在vue3中,我们是如何去实现数据的响应式的呢?是否还会像vue2那样使用 Object.defineProperty 去进行数据的劫持然后通过订阅者模式去进行视图的更新了?下面让我这个小白为大家来讲解一下!有不对的地方,欢迎大家来及时的纠正。

首先,在vue3中,实现数据的响应式和vue2是不同的,它不再使用 Object.defineProperty 这个方法去进行数据的劫持了(具体原因可参考 https://developer.aliyun.com/article/986896)。而是使用了ES6里面的Proxy代理。

Proxy在ES6里写道,Proxy相当于在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。所以,在vue3中使用Proxy代理去实现数据的响应式要比vue2的要全面一些。

具体的使用步骤:

(1)用法:new Proxy(要代理的对象,处理的方法),

(2)上截图

注意 handler 函数里的get方法与set方法里的参数都代表这什么

这是get方法里的:

target代表的是被代理的对象,也就是person这个对象

prop代表的是被代理的对象里的键,也就是person这个对象里的name这个键

receiver代表的是proxy实例本身

这是set方法里的:

target代表的是被代理的对象,也就是person这个对象

prop代表的是被代理的对象里的键,也就是person这个对象里的name这个键

receiver代表的是proxy实例本身

注意了,并不是所有的代理都会走handler函数里的get和set这两个方法,

如果不去改变被代理的对象的值得话,是不会走handler函数里的set方法的,只会handler函数里的get方法的。反之的话,会走handler函数里的get和set这两个方法。大家一定注意了。

上面就是我总结的,如果有不对的地方,可以来评论指出我的不足!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值