Vue学习笔记|Vue基础03

简介: Vue学习笔记|Vue基础03

MVVM模型

  • M:模型(Model) :对应data中的数据
  • V: 视图(View) :模板
  • VM:视图模型(ViewModel):Vue实例对象

M:

data:{
  name:'wyatt',
  address:'xaut',
}

V:

<div id="root">
  <h1>名称:{{name}}</h1>
  <h1>学校:{{address}}</h1>
</div>

VM:

观察发现:

  • M中所有的属性,最后都出现在了VM中。
  • VM中所有的属性及Vue原型上所有属性,在Vue模板中都可以直接使用。

数据代理

数据代理的实现基础

Object.defineProperty()方法允许通过属性描述对象,定义或修改一个属性,然后返回修改后的对象,它的用法如下。

Object.defineProperty(object, propertyName, attributesObject)

object:属性所在的对象

propertyName:字符串,表示属性

attributesObject:属性描述对象

官方文档:Object.defineProperty() - JavaScript

什么是数据代理

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

//例:使用对象obj2代理对象obj中x属性的读/x
let obj = {x:100}
let obj2 = {y:200}
Object.defineProperty(obj2,'x',{
    //当有人读取obj2的x属性时,get函数(getter)就会被调用,且返回值就是obj.x的值
  get(){
    return obj.x
  },
    //当有人修改obj2的x属性时,set函数(setter)就会被调用,且会收到修改的具体值
  set(value){
    obj.x = value
  }
})
  • 定义两个对象objobj2,通过Object.defineProperty()方法给对象obj2添加一个属性x
  • 通过get()方法使obj2.x获取到obj.x的值,实现通过obj2对象代理obj.x属性的读
  • 通过set()方法使obj2.x获取到修改的具体值,将该值赋给obj.x,实现通过obj2对象代理obj.x属性的写。

Vue中的数据代理

  • Vue中的数据代理:
  • 通过vm对象来代理 _data对象中属性的操作(读/写)

_data是来自new Vue时的对象data

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

Vue中数据代理示例图


目录
相关文章
|
1天前
|
缓存 JavaScript
什么是vue的计算属性?为什么使用?怎么使用?举例说明
什么是vue的计算属性?为什么使用?怎么使用?举例说明
|
1天前
|
缓存 JavaScript 前端开发
Vue基础
Vue基础
13 2
|
2天前
|
JavaScript
vue的生命周期
vue的生命周期
10 3
|
2天前
|
JavaScript 前端开发 API
什么是vue
什么是vue
11 4
|
2天前
|
JavaScript API 开发者
Vue中双向数据绑定是如何实现的?底层原理简介
Vue中双向数据绑定是如何实现的?底层原理简介
9 4
|
2天前
|
JavaScript 安全 前端开发
vue怎么处理跨域,原理?
vue怎么处理跨域,原理?
14 2
|
2天前
|
JavaScript 前端开发
vue的生命周期
vue的生命周期
11 2
|
2天前
|
资源调度 JavaScript
vue的跳转传参
vue的跳转传参
8 0
|
2天前
|
缓存 JavaScript 开发者
什么是vue的计算属性
什么是vue的计算属性
7 0
|
2天前
|
JavaScript
vue组件中data为什么必须是一个函数?
vue组件中data为什么必须是一个函数?
7 1