vue基础响应式数据

1.vue 采用 v……vm……m,模式,v---->el,vm---->new Vue(实例),m---->data 数据,让前端从操作大量的dom元素中解放出来。

2.vue响应式数据是怎么做到的?

  通过Object.defineproperty数据劫持

 1 //vue 响应式数据是怎么做到的:数据劫持 Object.defineproperty
 2 let obj = {
 3     name:"小明",
 4     age:32,
 5     info:{
 6         b:10
 7     }
 8 }
 9 function observe(obj){
10     if(typeof obj === ‘object‘){
11         //重新定义
12         for(let key in obj){
13             defineReactive(obj,key,obj[key]);
14         }
15     }
16 }
17 function defineReactive(obj,key,value){
18     observe(value);
19     Object.defineProperty(obj,key,{
20         get(){
21             console.log("get,",value);
22             return value;
23         },
24         set(newVal){
25             observe(newVal); //假如设置的值也是对象,也需要监视
26             console.log(‘数据修改了‘);
27             value = newVal;
28         }
29     })
30 }
31 observe(obj);
32 obj.age; //调用get()
33 obj.info = {b:20}; //调用set()
34 /*
35 输出:
36 get, 32
37 数据修改了
38 */

3.vue数据劫持指的是实例中date中定义的数据,初始时实例没有定义,在后面添加的数据不具有响应式,在data中定义的对象和数组可以在后面,添加元素,是响应式的。

原文地址:https://www.cnblogs.com/moon-yyl/p/11613158.html

时间: 2024-11-06 07:20:00

vue基础响应式数据的相关文章

vue源码之响应式数据

分析vue是如何实现数据响应的. 前记 现在回顾一下看数据响应的原因. 之前看了vuex和vue-i18n的源码, 他们都有自己内部的vm, 也就是vue实例. 使用的都是vue的响应式数据特性及$watchapi. 所以决定看一下vue的源码, 了解vue是如何实现响应式数据. 本文叙事方式为树藤摸瓜, 顺着看源码的逻辑走一遍, 查看的vue的版本为2.5.2. 目的 明确调查方向才能直至目标, 先说一下目标行为: vue中的数据改变, 视图层面就能获得到通知并进行渲染. $watchapi监

vue系列---响应式原理实现及Observer源码解析(一)

_ 阅读目录 一. 什么是响应式? 二:如何侦测数据的变化? 2.1 Object.defineProperty() 侦测对象属性值变化 2.2 如何侦测数组的索引值的变化 2.3 如何监听数组内容的增加或减少? 2.4 使用Proxy来实现数据监听 三. Observer源码解析 回到顶部 一. 什么是响应式? 我们可以这样理解,当一个数据状态发生改变的时候,那么与这个数据状态相关的事务也会发生改变.用我们的前端专业术语来讲,当我们JS中的对象数据发生改变的时候,与JS中对象数据相关联的DOM

chart接入后台数据后vue不响应式显示图片

chart接入后台数据后vue不响应式显示图片 watch: { //观察option的变化 config: { handler(newVal, oldVal) { if (this.chart) { if (newVal) { this.chart.setOption(newVal); } else { this.chart.setOption(oldVal); } } else { this.init(); } }, deep: true //对象内部属性的监听,关键. } }, 完整的ch

vue.js响应式原理解析与实现

从很久之前就已经接触过了angularjs了,当时就已经了解到,angularjs是通过脏检查来实现数据监测以及页面更新渲染.之后,再接触了vue.js,当时也一度很好奇vue.js是如何监测数据更新并且重新渲染页面.今天,就我们就来一步步解析vue.js响应式的原理,并且来实现一个简单的demo. 首先,先让我们来了解一些基础知识. 基础知识 Object.defineProperty es5新增了Object.defineProperty这个api,它可以允许我们为对象的属性来设定gette

Vue.js响应式原理

本文和大家分享的主要是Vue.js 响应式原理相关内容,一起来看看吧,希望对大家 学习Vue.js有所帮助. 关于Vue.js Vue.js 是一款 MVVM 框架,上手快速简单易用,通过响应式在修改数据的时候更新视图. Vue.js 的响应式原理依赖于 Object.defineProperty  ,尤大大在Vue.js 文档中就已经提到过,这也是 Vue.js 不支持 E8 以及更低版本浏览器的原因. Vue 通过设定对象属性的  setter/getter  方法来监听数据的变化,通过 g

vue中响应式props办法

title: vue中响应式props办法 toc: false date: 2018-12-25 21:22:49 categories: Web tags: Vue 更新props数据时,使用this.$set: this.$set(this.data, "key", "value") 原文地址:https://www.cnblogs.com/zmj97/p/10180677.html

vue的响应式原理

Vue 最独特的特性之一,是其非侵入性的响应式系统.数据模型仅仅是普通的 JavaScript 对象.而当修改它们时,视图会进行更新. 当我们把一个普通的 JavaScript 对象传给 Vue 实例的 data 选项,Vue 将遍历此对象所有的属性,并使用  Object.definedProperty  把这些属性全部转为  getter/setter .Object.defineProperty 是 ES5 中一个无法 shim 的特性,这也就是为什么 Vue 不支持 IE8 以及更低版本

Vue.js 响应式原理

1. Vue2.x 基于 Object.defineProperty 方法实现响应式(Vue3将采用proxy) Object.defineProperty(obj, prop, descriptor) 2. 定义defineReactive来对对象的属性进行getter.setter操作 function defineReacive(obj, key, val){ Object.defineProperty(obj, key, { enumerable: true, configurable:

如何给一个响应式数据添加一个属性 this.$set

this.$set(this.data,”key”,value’) Vue.set(vm.items,2,"ling") : 表示 把vm.items  这个数组的下标为2 的元素,改为"ling" Vue.set(vm.person,"age","26") Vue.set()向响应式对象中添加一个属性,并确保这个新属性同样是响应式的,且触发视图更新.它必须用于向响应式对象上添加新属性,因为 Vue 无法探测普通的新增属性 (