折腾vue3响应式原理(2)----Reflect对象

这篇博客介绍了如何利用JavaScript的Reflect对象和Proxy来拦截并控制对象的读取、设置和删除属性的操作。通过创建一个代理对象,可以自定义读取、修改和删除属性时的逻辑,实现数据的响应式原理。
摘要由CSDN通过智能技术生成

参考文档:Reflect - JavaScript | MDN

Reflect 是一个内置的对象,它提供拦截 JavaScript 操作的方法

得到一个属性

更改一个属性

 



当然增加也是可以的



删除呢?

 



配合proxy,实现简单的响应原理

 <script>
    let person = {
      name: '高山我梦',
      age: 20
    }
    let p = new Proxy(person, {
      get(target, property, receiver) {
        console.log('我是读取的逻辑哦');
        console.log(receiver);
        // return target[property]
        return Reflect.get(target, property)
      },
      set(target, property, value) {
        console.log('我被修改或增加了,传进来的值是', value);
        // 写上逻辑就行了
        // target[property] = value
        Reflect.set(target, property, value)
      },
      deleteProperty(target, property) {
        // return delete target[property]
        return Reflect.deleteProperty(target, property)
      }
    })
  </script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值