首页 > 其他分享 >vue2响应式原理及缺点和vue3响应式原理实现

vue2响应式原理及缺点和vue3响应式原理实现

时间:2023-02-12 23:35:45浏览次数:40  
标签:set target vue2 person value 响应 propName 原理

vue2响应式原理:

对象类型:通过Object.defineProperty() 对属性读取、修改进行拦截(数据劫持)

数组类型:通过重写更新数组的一系列方法来实现拦截。(对数组的变更方法进行了包裹)

vue2 响应式实现

let person = {
  name: '张三',
  age: 18        
}
let p = {}
Object.defineProperty( p, 'name', {
    get(){ // 有人读取name时调用
      return person.name
    },
    set( value ){ // 有人修改name时调用
      person.name = value
    } 
})
Object.defineProperty( p, 'age', {
    get(){ // 有人读取age时调用
      return person.age
    },
    set( value ){ // 有人修改age时调用
      person.age = value
    } 
})

 

vue2 响应式缺点

this.$set( this.objName, 'key', 'value' )  //vue2 对象添加属性
this.$delete( this.objName, 'key' ) // 对象删除属性
this.$set( this.arrayName, 0, 'value' ) // 修改数组索引0的value
或者 this.arrayName.splice( 0, 1, 'value )

vue3的响应式原理:

通过Proxy(代理):拦截对象中任意属性的变化,包括属性值的读写、添加、删除等

通过Reflect(反射):对被代理对象的属性进行操作

详见MDN文档

vue3响应式实现

let p = new Proxy(person, {       get(target, propName) {         // return target[propName]   js是单线程 用Object.defineProperty一旦报错就挂掉了         return Reflect.get(target, propName) // 通过Reflect (反射对象) 它身上的defineProperty 去操作 即使出错也不会挂掉       },       set(target, propName, value) {         // target[propName] = value         Reflect.set(target, propName, value)       },       deleteProperty(target, propName) {         // return delete target[propName]         return Reflect.deleteProperty(target, propName)       }     })

 

标签:set,target,vue2,person,value,响应,propName,原理
From: https://www.cnblogs.com/lucky06y/p/17114993.html

相关文章

  • 计算机网络原理-6.物理层
    数据通信基础消息:人类能够感知的描述成为消息信息:信息是对是无状态或存在方式的不确定性表述,信息室可以度量的通信:本质就是在一点精确或近似地再生另一点的信息通信系......
  • 学习笔记jira项目21-jwt原理和auth-provide
    constAuthContext=React.createContext<|{user:User|null;register:(form:AuthForm)=>Promise<void>;login:(form:AuthForm)=>Promise<......
  • 《分布式技术原理与算法解析》学习笔记Day09
    非集中式结构什么是非集中式结构?在非集中式结构中,服务的执行和数据的存储被分散到不同的服务器集群,服务器集群之间通过消息传递进行通信和协调,非集中式结构没有中央服务......
  • 权限源码分析、认证源码分析、频率源码分析、异常处理、异常处理、jwt介绍和原理、drf
    权限源码分析写一个权限类局部使用配置在视图类的就会执行权限类的permission_classes方法完成权限校验'''drf的APIView源码执行流程: 1.先匹配路由APIView中as_vie......
  • 数据库索引原理及优化
    摘要: 本文内容主要来源于互联网上主流文章,只是按照个人理解稍作整合,后面附有参考链接。本文内容主要来源于互联网上主流文章,只是按照个人理解稍作整合,后面附有参考链接......
  • 传输层--可靠数据传输的基本原理
    可靠的数据传输:网络top10问题之一就是解决网络的可靠的数据传输。什么是可靠:即不丢,不错,不乱;rdt:reliabledatatransfer rdt1.0:......
  • ucos-ii 任务调度实现的原理
    使用过ucosii的朋友应该都会知道,单片机+嵌入式实时操作系统能够做到尽可能最大化的利用cpu资源,通过加入实时操作系统能够做出更加强大的产品和应用。不知道使用过ucosii的朋......
  • 计算机网络原理-4.网络层
    网络层服务数据报网络与虚电路网络网络互连与网络互连设备网络层拥塞控制Internet网络层路由算法与路由协议......
  • 计算机网络原理-1.计算机网络概述
    计算机网络的基本概念计算机网络是互连的、自治的计算机的集合协议协议是玩过通信实体之间再数据交换过程中需要遵循的规则或约定,包括3个基本要素语法-实体之间交......
  • 计算机网络原理-2.网络应用
    计算机网络应用体系结构C/S结构最主要的特征是通信只在客户与服务器之间进行,客户与客户之间不进行直接通信P2P结构每个对等端都同时具备C/S应用的客户与服务器......