vue中的数据代理(大白话)

前置知识

1.vue插值语法里的变量(或者this的形式)实际访问的是vue实例(vm)的属性和方法

2.数据代理:当我们读写一个对象的属性时,实质是读写的另一个对象的属性。如图:

const student = {
    name:'lili'
}

const student1 = {
  age:18
}

// 读写student的age属性的时候 实际读写的是student1的age属性
Object.defineProperty(student,'age', {
  get() { // 读age属性值时触发
    return student1.age
    },
    set(val) { // 重写age值时触发
    student1.age = val
    }
  })

vue中的数据代理

在我们new Vue 时,Vue 做了以下事情:

1.将配置项option里我们自定义的data属性里所有的值,收集作为_data的属性值(在这里会做数据劫持,这里不展开了),并挂载到vm实例上(可以理解为 option.data = vm._data)

2.将option.data的所有的属性及属性值,单个拎出并一 一挂载到vm实例上

3.通过数据代理的形式,当我们通过模板字符串或者通过this读写vm身上option拎出来的属性时,实际读写的是vm身上_data的属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值