Vue 的MVVM模型和数据代理

MVVM模型

1 . M : 模型 (model) : data中的数据
2 . V : 视图 (View) : 模板代码
3 . V M : 视图模型 (ViewModel) : Vue实例
观察发现 :

1.data上的所有属性,最后都出现在Vm上。
2 . Vm上所有的属性和vue原型上的属性,在vue模板上都可以直接使用

数据代理

回顾 Object.defineProperty方法

 let number =18;
    var obj  = {
      name:'张三',
      sex:'男',
    }
    Object.defineProperty(obj,'age',{ 
      // value:'18',
      // enumerable:true,  //控制属性是否可以枚举
      // writable:true,      //控制属性是否可以被修改
      // configurable:true,   //控制属性是否可以被删除  

      // 当有人读取obj的age属性时,get函数(getter)就会被调用,返回值就是age的值
      get(){
        console.log('有人读取了age属性')
        return number
      },
       // 当有人修改obj的age属性时,set函数(setter)就会被调用,返回值就是修改的值
      set(value){
        console.log('有人修改了age属性,值是',value);
        number = value;
       }
    })

定义:通过一个对象代理对另一个对象中的属性的操作(读 / 写)

   let a = {x:100};
    let b = {y:200};
    Object.defineProperty(b,'x',{
      get(){
        return a.x;
      },
      set(value){
        a.x = value;
      }   

Vue实现数据代理

1 . 通过vm对象来处理data对象中属性的基本操作(读 / 写).
2 . 好处 : 更方便的操作data中的数据

基本原理 :

1.通过 Object.defineProperty()把data对象中所有属性添加到vm上。
2 . 为每一个添加到vm上的属性,都指定一个getter/setter。
3 . 在getter/setter内部去操作data中对应的属性

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值