美文网首页
Vue2.0响应式原理&&Vue3.0响应式原理

Vue2.0响应式原理&&Vue3.0响应式原理

作者: 二营长家的张大炮 | 来源:发表于2019-10-31 18:12 被阅读0次

    2.0

    // 监视
    function observer(data){
     // 判断是否为对象或者是否为null
     if(typeof data !== 'object' || data === null){
         return data
     }
      // 遍历data中的参数给每一个对象一个get set方法
      for(let key in data){
        defineProperty(data,key,data[key])
      }
    }
    
    // 通过es6的Object.defineProperty
    function defineProperty(data,key,value){
        observer(value)
       Object.defineProperty(data,key,{
            get(){
                return value
            },
           set(newVal){
            if(value !== newVal){
                observer(newVal)
                updateView()
                value = newVal
            }
           }
       })
    }
    
    function updateView(){
        console.log('更新视图')
    }
    
    let data = {
        id:1,
        name:'zpwan'
    }
    
    // 监视data对象
    observer(data)
    
    console.log('data.name',data.name)
    // 调用修改data中的变量
    console.log('data.id',data.id)
    data.name = 'wzpaaa'
    
    console.log('data.name',data.name)
    

    相关文章

      网友评论

          本文标题:Vue2.0响应式原理&&Vue3.0响应式原理

          本文链接:https://www.haomeiwen.com/subject/dmetbctx.html