data数据响应式

data数据响应式

所有在实例上挂载的属性,都可以在视图中直接使用

data中的数据,是经过“数据劫持”的,是“响应式数据

响应式:修改数据,视图会自动更新

MV原理:其中一条线的原理,data响应式的原理

template

  • 小胡子语法
  • v-指令

小胡子语法{{}}

{{}}中:

window上的少数方法:一些数据类型转换的方法

react:数字 字符串,原始值/其他类型都渲染为空。

vue&react底层渲染机制不一样

Object.defineProperty

对象成员的规则限制*

enumerable:能够被for-in或Object.keys迭代到的

configurable:是否可删除。能否通过delete删除

自定义的私有属性规则:可枚举 可删除 可修改

浏览器内置的属性规则:不可枚举 可删除 可修改

设置成员

内置类的原型上扩展一些方法:

对象中的某个成员做数据劫持*

先把数据克隆一份,set/get都是改克隆的那份

直接从堆内存中拿信息=>获取/设置都劫持到半路上(通知视图更新)

ps.劫持和value writable相互冲突

响应式数据*

前置了解:MVVM&单文件组件

属性:既不可更改,也不可删除(configurable/writable)

新增属性:也不能新增了

  1. 深递归

  1. 若冻结,那么其内部属性不再进行属性劫持
  2. Object.keys:可枚举 非Symbol 私有

  1. 数组:原型重定向。重写数组的原型指向

例子:

  1. 劫持阶段:发生在new Vue阶段。

$set: 

  1. 新增加的属性
  2. 已有属性,无效
  3. 对数组索引

例子:改数组

源码实现

首先只处理数组和对象,分为数组&对象

数据驱动,然后视图更新。数据改完之后一定要视图更新

数组

重写原型:重写原型指向,自己构造了一个原型对象;

自己构造的原型对象:重写了7个方法=>先调用原始的数组原型链上的方法以实现数据层面的更新;然后compiler视图更新

而且是深递归

对象

  1. Object.keys遍历;然后递归

defineReactive只做当前层

data是最高层,x y是属性

  1. 设置值的时候也需要observe

  1. 深层次的递归和劫持
  2. 冻结对象不做劫持
  3. 数组来讲,并不是对每一项索引项进行劫持,而是重写原型指向(7个方法)
  4. 对象来讲,Object.keys可枚举&非Symbol类型属性
  5. 新set值也会进行劫持。重新来一遍

vue自身的源码:

符合条件,才会observer类。能执行到observer里的,要么是对象要么是数组。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/295494.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于redis单线程和IO多路复用的理解

首先,Redis是一个高性能的分布式缓存中间件。其复杂性不言而喻,对于Redis整体而言肯定不是只有一个线程。 我们常说的Redis 是单线程,主要是指 Redis 在网络 IO和键值对读写是采用一个线程来完成的,这也是 Redis 对外提供键值存储…

Android App程序应用未校验签名证书——————《风险等级高》

目录 应用签名未校验风险1、检测目的2、风险等级3、检测依据4、风险描述5、检测步骤6、结果描述7、解决方案7.1、Android 检验 APK 是否签名的代码7.2、检验APK签名 8、结尾 应用签名未校验风险 1、检测目的 检测App程序启动时是否校验签名证书。 防止App的盗版率。未进行签…

Python3 迭代器与生成器

迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式。 迭代器是一个可以记住遍历的位置的对象。 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。 迭代器有两个基本的方法:iter…

C/C++ 基础函数

memcpy:C/C语言中的一个用于内存复制的函数,声明在 string.h 中(C是 cstring) void *memcpy(void *destin, void *source, unsigned n);作用是:以source指向的地址为起点,将连续的n个字节数据,…

微服务之配置中心与服务跟踪

zookeeper 配置中心 实现的架构图如下所示,采取数据加载到内存方式解决高效获取的问题,借助 zookeeper 的节点监听机制来实现实时感知。 配置中心数据分类 事件调度(kafka) 消息服务和事件的统一调度,常用用 kafka …

基于阻塞队列下的生产者消费者模型(多线程)

目录 一、生产者消费者模型1.1 为何要使用生产者消费者模型1.2 生产者消费者模型优点1.3 基于BlockingQueue的生产者消费者模型1.4 C用queue模拟阻塞队列的生产消费模型1.4.1 makefile1.4.2 BlockQueue.hpp1.4.3 LockGuard.hpp1.4.4 Task.hpp1.4.5 main.cc 二、Linux多线程内容…

1854_bash中利用管道进行批量参数传递以及由此实现简单的代码行数统计

Grey 全部学习内容汇总: GreyZhang/bash_basic: my learning note about bash shell. (github.com) 1854_bash中的参数传递以及利用bash进行简单的代码行数统计 有时候需要处理多个文件,把每一个文件作为参数传递给某一个程序。这时候可以用到 xargs&…

XSKY星辰天合星海架构荣获 IT168 “2023 年度技术卓越奖”

近日,"2023 年度技术卓越奖"获奖名单公布,XSKY 星辰天合的星海架构(XSEA,极速全共享架构)获得行业 CIO/CTO 大咖、技术专家及 IT 媒体三方认可,成功入选! “技术卓越奖”评选由国内著…

KMP入门级别算法详解--终于解决了(next数组详解)

对于正常的字符串模式匹配,主串长度为m,子串为n,时间复杂度会到达O(m*n),而如果用KMP算法,复杂度将会减少线型时间O(mn)。 设主串为ptr"ababaaababaa";&#…

双非本科求职_面试经验

前言 继上次发实习面经已经过去一个多快两个月,这期间又面试了不少,但由于赶上秋招因此一直没写后续,今天做个回忆总结。由于菜鸟脑容量本来就不咋地,所以当初没写导致现在忘了好多,因此就写那些印象比较深的吧。交代…

【C++进阶02】多态

一、多态的概念及定义 1.1 多态的概念 多态简单来说就是多种形态 同一个行为,不同对象去完成时 会产生出不同的状态 多态分为静态多态和动态多态 静态多态指的是编译时 在程序编译期间确定了程序的行为 比如:函数重载 动态多态指的是运行时 在程序运行…

变限积分求导(带参,极限)

方法 一般形 带参数方程形 带极限型