Advertisement

Vue组件的响应式实现(基于动态数据传输)

阅读量:

数组自有的遍历

首先的一点,就是要先区分数组的遍历,和之前的 walk 遍历对象,有所区分。

我们新增一个 observeArray 专门用来遍历数组。

可能会有疑问:为什么数组的 observeArray 循环使用 observe 而 walk 则采用 defineReactive?这是因为数组中的数据可能并非对象类型,因此需要采用 observe 方法来处理相关操作。

复制代码
 function observeArray(list) {

    
   for(let i=0,l=list.length;i<l;i++){
    
     observe(list[i])
    
   }
    
 }

然后在 Observer 构造函数出进行类型判断

复制代码
 class Observer{

    
   constructor(obj){
    
     def(obj,'__ob__',this,false)
    
     if (Array.isArray(obj)){
    
       observeArray(obj)
    
     }else{
    
       this.walk(obj);
    
     }
    
   }
    
   // ...
    
 }

全部评论 (0)

还没有任何评论哟~