Vue2数据响应式原理深度解析( 三 )

本文深入解析Vue2中数组的响应式原理,通过模块化编程和文件间调用,详细介绍了如何实现数组元素及新增元素的响应式绑定。涉及关键步骤包括:梳理执行顺序,创建array.js文件,实现数组内元素的响应式,以及完善Observer.js。文章还强调了Object.setPrototypeOf和Object.create方法在过程中的作用,并预告了后续关于依赖收集和Watcher、Dep类的讲解。
摘要由CSDN通过智能技术生成

Vue2数据响应式原理逻辑深度解析(三)

========================

前言

大家好,欢迎来到今天的学习,在上一篇文章当中我们实现了关于对象绑定响应式的操作,今天我们来实现关于如何对数组内部的元素及数组内部新添加的元素进行响应式绑定。

目标

利用模块式编程,通过多个文件之间相互调用,文件内部的函数等方法嵌套循环使用来实现数组相关的响应式绑定

在这个系列中,有很多地方需要创建方法和文件,初学者可能一开始不知为什么这样做,等慢慢深入了解就能够把逻辑衔接起来了

在写逻辑代码实现功能之前,我们要知道我们现在具体要实现什么。第一,当访问数组时,会触发相应的get函数,这在上一篇已实现; 第二,我们操作数组的元素时,要对七个方法进行改写,例如当我们往原数组里追加数组时,那这个子数组也应该设置为响应时;第三,当我们把数组的其中一个元素设置为一个新数组时,这个新数组也应该设置为响应式

实现步骤

首先,我们在对象obj里设置一个数组g

let obj = {g: [22, 33, 44, 55]
} 

接着我们要对obj及其内部的对象g来添加响应式,我们可以先把具体的流程走一走

梳理执行顺序

首先让这个obj进行响应式绑定

然后这个obj会经过observe.js --> Observer.js --> utils.js -->defineReactive.js , 此时在defineReactive.js文件中,传递进去的data就是obj本身,key是属性g,因此这时候的val就是一个数组,接着这个数组会被observe一下,然后再次进入到Observer.js文件 , 此时我们必须要对传进来的value进行判断,如果为数组,我们要将这个数组的原型指向一个arrayMethods里的所有属性

注意此时obj对象和内部的数组g身上都追加了一个 __ob__的属性

因此在Observer.js对传值的判断需要重写一下,如图

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值