vue3笔记(模拟响应式)

模拟vue2响应式

      let x = {
            name:'李四',
            age:22
        }//源数据
      let y = {}
      Object.defineProperty(y,'name',{//数据代理
          // enumerable: true,//可以被枚举
          // writable:true,//可以被修改
          configurable:true,//允许删除name,
          get(){//有人读取name时调用
              return x.name
          },
          set(value){//有人修改name时调用,value是修改后返回值
              x.name = value
          }
      })

模拟vue3响应式

    const z = new Proxy(x,{//Proxy是window上内置构造函数
        //有人读取z的某个属性时调用
        get(target,propName){//taget是源数据,propName是读取的属性
            // return target[propName]
            return Reflect.get(target,propName)
        },
        //有人修改或添加z的某个属性时调用
        set(target, propName,value){//value是修改后值
            // target[propName] = value
            Reflect.set(target, propName, value)
        },
        //有人删除z的某个属性时调用
        deleteProperty(target, propName){
            // return delete target[propName]//delete删除一个属性返回布尔值
            return Reflect.defineProperty(target, propName)
        }
    
    })
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值