Vue2.0响应式原理&&Vue3.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)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • VUE2.0 的响应式原理 本篇文章篇幅较长,已经对2.0响应式原理熟悉的可直接跳过此部分,各取所需,共同交流 在...
    ElvisYang1993阅读 1,241评论 0 3
  • 目录: Android:Android 0.*Android 1.*Android 2.*Android 3.*A...
    敲代码的令狐葱阅读 4,564评论 0 2
  • 我的第五幅素描(在家涂鸦,确实有点乱)
    素描2018阅读 106评论 0 0
  • 此刻,双腿酸软,一天兼职过后夹杂些许憤闷躺在床上,无非于兼职时间一点点被剥削,同等条件下,钱更加难赚,诱人工资背后...
    阳悦儿阅读 110评论 0 1
  • 王家卫说,世界上的一切都有保质期。 就像你妈,喜欢你最多三天。 每次放假回家,只有前三天你在家里还算有点地位,基本...
    实小王丽波阅读 404评论 0 8

友情链接更多精彩内容