vue3.0响应式原理实现

本文介绍了Vue3.0响应式原理的实现,包括Dep类用于收集依赖,reactive函数创建响应式对象,使用Proxy进行数据劫持,以及autoRun函数实现自动更新。通过示例展示了如何创建和修改响应式对象,以及自动触发更新的过程。
摘要由CSDN通过智能技术生成

class Dep {

  constructor() {

      this.subscribers = new Set(); // 保证依赖不重复添加

  }

  // 追加订阅者

  depend() {

      if(activeUpdate) { // activeUpdate注册为订阅者

          this.subscribers.add(activeUpdate)

      }

 

  }

  // 运行所有的订阅者更新方法

  notify() {

      this.subscribers.forEach(sub => {

          sub();

      })

  }

}

let activeUpdate

function reactive(target) {

 return createReactiveObject(target)

}

let toProxyMap = new WeakMap()

let toRawMap = new WeakMap()

function createReactiveObject(target) {

  let dep = new Dep()

  if(!isObject(target)) return target

  // reactive(obj)

  // reactive(obj)

  // reactive(obj)

  // target已经代理过了,直接返回,不需要再代理了

  if(toP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值