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中数据代理示例图


目录
相关文章
|
3天前
|
JavaScript
vue消息订阅与发布
vue消息订阅与发布
|
4天前
|
JavaScript 前端开发 IDE
Vue学习笔记5:用Vue的事件监听 实现数据更新的实时视图显示
Vue学习笔记5:用Vue的事件监听 实现数据更新的实时视图显示
|
3天前
|
JavaScript
vue尚品汇商城项目-day07【vue插件-50.(了解)表单校验插件】
vue尚品汇商城项目-day07【vue插件-50.(了解)表单校验插件】
12 4
|
3天前
|
JavaScript
vue尚品汇商城项目-day07【51.路由懒加载】
vue尚品汇商城项目-day07【51.路由懒加载】
12 4
|
4天前
|
JavaScript 前端开发
Vue学习笔记8:解决Vue学习笔记7中用v-for指令渲染列表遇到两个问题
Vue学习笔记8:解决Vue学习笔记7中用v-for指令渲染列表遇到两个问题
|
3天前
|
JavaScript
vue尚品汇商城项目-day07【vue插件-54.(了解)生成二维码插件】
vue尚品汇商城项目-day07【vue插件-54.(了解)生成二维码插件】
8 2
|
4天前
|
JavaScript 前端开发 API
Vue学习笔记7:使用v-for指令渲染列表
Vue学习笔记7:使用v-for指令渲染列表
|
JavaScript 测试技术 容器
Vue2+VueRouter2+webpack 构建项目
1). 安装Node环境和npm包管理工具 检测版本 node -v npm -v 图1.png 2). 安装vue-cli(vue脚手架) npm install -g vue-cli --registry=https://registry.
1039 0
|
5天前
|
JavaScript
vue组件中的插槽
本文介绍了Vue中组件的插槽使用,包括单个插槽和多个具名插槽的定义及在父组件中的使用方法,展示了如何通过插槽将父组件的内容插入到子组件的指定位置。
|
4天前
|
JavaScript 前端开发 API
Vue学习笔记4:用reactive() 实现数据更新的实时视图显示
Vue学习笔记4:用reactive() 实现数据更新的实时视图显示
下一篇
无影云桌面