美文网首页
vue - MVVM,数据代理

vue - MVVM,数据代理

作者: 恒星的背影 | 来源:发表于2022-03-17 16:03 被阅读0次

    MVVM

    M:模型(Model) :data中的数据
    V:视图(View) :模板代码
    VM:视图模型(ViewModel):Vue实例

    1. data中所有的属性,最后都出现在了vm身上。
    2. vm身上所有的属性及Vue原型上所有属性,在Vue模板中都可以直接使用。

    数据代理

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

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

    Vue 的数据代理:

    vm._data === data    // data 指的是 new Vue({ data: {} }) 中的 data
    

    vm.address, vm.name 都是通过 Object.defineProperty() 定义的,对其进行访问和修改时,会去获取和修改 vm._data 中的对应属性。

    1. Vue中的数据代理:通过vm对象来代理data对象中属性的操作(读/写)
    2. 基本原理:
      通过Object.defineProperty()把data对象中所有属性添加到vm上。
      为每一个添加到vm上的属性,都指定一个getter/setter。
      在getter/setter内部去操作(读/写)data中对应的属性。

    相关文章

      网友评论

          本文标题:vue - MVVM,数据代理

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