美文网首页
Vue数据响应式

Vue数据响应式

作者: 招投标秘籍 | 来源:发表于2021-10-18 23:10 被阅读0次

1.什么是数据响应式

在 Vue 中,当 data 中的数据发生改变时,视图会进行更新,这就是Vue数据响应式的概念。
接下来让我们理解一下更深层的原理

2.我们从一个小实验开始

通过代码示例,myData 中的 n 数据类型发生改变,一开始是 {n: 0} ,传给 new Vue 之后立刻变成 {n: (...)},这是为什么呢 Vue对data做了什么呢?

3.get和set

get obj(){},不加括号使用,读属性
set obj(){},接受参数,写属性

let obj0 = {
  姓: "高",
  名: "圆圆",
  age: 18
};

// 需求一,得到姓名

let obj1 = {
  姓: "高",
  名: "圆圆",
  姓名() {
    return this.姓 + this.名;
  },
  age: 18
};

console.log("需求一:" + obj1.姓名());
// 姓名后面的括号能删掉吗?不能,因为它是函数
// 怎么去掉括号?

// 需求二,姓名不要括号也能得出值

let obj2 = {
  姓: "高",
  名: "圆圆",
  get 姓名() {
    return this.姓 + this.名;
  },
  age: 18
};

console.log("需求二:" + obj2.姓名);

// 总结:getter 就是这样用的。不加括号的函数,仅此而已。

// 需求三:姓名可以被写

let obj3 = {
  姓: "高",
  名: "圆圆",
  get 姓名() {
    return this.姓 + this.名;
  },
  set 姓名(xxx){
    this.姓 = xxx[0]
    this.名 = xxx.slice(1)
  },
  age: 18
};

obj3.姓名 = '高媛媛'

console.log(`需求三:姓 ${obj3.姓},名 ${obj3.名}`)// 高  媛媛

// 总结:setter 就是这样用的。用 = xxx 触发 set 函数

4.Object.defineProperty()

Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。

const object1 = {};

Object.defineProperty(object1, 'property1', {
  value: 42,
  writable: false
});

object1.property1 = 77;

console.log(object1.property1);

5.vue的数据响应式

const vm = new Vue({
    data:{n : 0}
})

1.new Vue内部对data对象进行监听,大概内容如下:
首先,new Vue用一个变量(变量名任意)例如'n',' let _n = data.n' 保存data.n的值。
然后,通过Object.defineProperty给data对象一个虚拟的属性'n',通过get/set方法模拟对'n'的读写操作同时覆盖原来的值,这样就保存了原始的值且不会被修改。

2.new Vue对data对象设置代理:
首先,设置一个空对象'const obj = {}',
然后,通过Object.defineProperty给obj对象虚拟属性'n',这里的get/set方法返回的值就是new Vue对data监听过的data.n,是我们需要获得的值。
最后,new Vue return值是一个对象:obj,即data对象的代理

3.const vm = new Vue(data:{n :0}),vm的地址就是obj的地址,vm.n ===data.n
vm不存在的时候用this等同。

总结:以上就是new Vue对data对象的监听和代理操作,当数据变化,vm就会调用render()函数,实时更新UI。


image.png

相关文章

  • 前端面试题【Day02】

    本篇绪论 1,Vue响应式原理 1,Vue响应式原理 在vue实例中声明的数据就是响应式的。响应式:数据发生改变,...

  • 2020-12-25

    Vue数据响应式 响应式:当一个物体对外界刺激做出反应,就是响应式。例如:我打你一拳你知道躲。 Vue 数据响应式...

  • Vue的响应式浅析

    1 Vue如何实现响应式? Vue的响应式是建立在监听data中的数据. 2 在Vue2中响应式的实现 Vue通过...

  • Vue源码03-响应式原理

    这节将专门讲解vue MVVM响应式处理 Vue采用的是 实现数据的响应式 数据劫持 Observer类 Obse...

  • 学习vue的响应式 mvvm -01 数据响应式

    理解VUE的设计思想:VUE的核心是MVVM MVVM框架的三要素:数据响应式 模板引擎以及渲染 数据响应式:监听...

  • Vue数据响应式

    1.什么是数据响应式 在 Vue 中,当 data 中的数据发生改变时,视图会进行更新,这就是Vue数据响应式的概...

  • 深入理解Vue数据响应式

    Vue数据响应式主要研究的是 Vue 构造选项中 data 属性的特性 深入响应式 官方文档 网址: https:...

  • VUE中数据响应式原理

    1.vue数据响应式的原理2.数据属性的四大特性3.访问器属性4.getter和setter vue数据响应式主要...

  • 双向绑定

    数据响应式原理 vue实现数据响应式的原理就是利用了Object.defineProperty(),重新定义了对象...

  • Vue 数据响应式原理

    前言 Vue.js 的核心包括一套“响应式系统”。 “响应式”,是指当数据改变后,Vue 会通知到使用该数据的代码...

网友评论

      本文标题:Vue数据响应式

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