Object.defineProperty是一个用来定义对象的属性或者修改对象现有的属性的函数,,而 Proxy 是一个用来包装普通对象的对象的对象。

张子俊改

Object.defineProperty是vue2响应式的原理, Proxy 是vue3响应式的原理

1)参数不同

Object.defineProperty参数
obj: 要定义属性的对象。
prop: 要定义或修改的属性的名称 。

Proxy 参数

target: 要包装的目标对象(可以是任何类型的对象,包括原生数组,函数,甚至另一个代理

2)返回值不同

Object.defineProperty返回值

被传递给函数的对象,就是要定义或修改属性的对象

Proxy 返回值

一个Proxy代理的对象,操作这个对象会触发handler对应操作。改变原始对象不会触发。

3)数据类型不同

Object.defineProperty是函数

Proxy是一个对象

Object.defineProperty 和 Proxy 的区别相关推荐

  1. es6相关面试题:1.rest参数;2.new.target;3.object.defineProperty与Proxy的区别;4.Reflect对象作用;5.lterator迭代器;6.async

    文章目录 说说对ES6中rest参数的理解 说说你对new.target的理解 谈谈object.defineProperty与Proxy的区别 ES6中的Reflect对象有什么用? 简单介绍下ES ...

  2. Object.defineProperty 以及 Proxy对比和基本语法 实干vue3数据响应

    一.Object.defineProperty是什么? Object.defineProperty 是ES5Proxy 为开发者提供JavaScript已有却不能调用的功能,在ES5之前,js环境中的 ...

  3. Object.defineProperty与proxy进行对比

    Object.defineProperty() 和 ES2015 中新增的 Proxy 对象,会经常用来做数据劫持. 数据劫持:在访问或者修改对象的某个属性时,通过一段代码拦截这个行为,进行额外的操作 ...

  4. Proxy与Object.defineProperty的优劣对比

    Object.defineProperty 劫持数据 只是对对象的属性进行劫持 无法监听新增属性和删除属性 需要使用 vue.set, vue.delete 深层对象的劫持需要一次性递归 劫持数组时需 ...

  5. Vue 的响应式原理中 Object.defineProperty 有什么缺陷?为什么在 Vue3.0 采用了 Proxy,抛弃了 Object.defineProperty?...

    Object.defineProperty无法监控到数组下标的变化,导致通过数组下标添加元素,不能实时响应: Object.defineProperty只能劫持对象的属性,从而需要对每个对象,每个属性 ...

  6. Proxy 与 Object.defineProperty 优劣对比

    Proxy的优势如下: Proxy可以直接监听对象而非属性: Proxy可以直接监听数组的变化: Proxy有多达13种拦截方法,不限于apply.ownKeys.deleteProperty.has ...

  7. 基于Object.defineProperty实现双向数据绑定

    双向数据绑定可算是前端领域经久不衰的热词,不管是前端开发还是面试都会有所涉及.而且不同的框架也想尽一切办法去实现这一特性,比如: Knockout / Backbone --- 发布-订阅模式 Ang ...

  8. 对javscript中Object.defineProperty的理解

      自己在使用vue的过程中经常会用到听到数据双向绑定这个词,而且我们还可以直接通过调用this.msg(this表示vue实例),来获取data上的数据,以前一直不太明白为什么可以这样获取,直到有一 ...

  9. Object.defineProperty的理解

    一.Object.defineProperty:给一个对象定义一个新的属性或修改一个对象现有的属性,并且返回这个对象 1.语法:Object.defineProperty(参数1,参数2,参数3) 参 ...

最新文章

  1. MATLAB中PI调节器设计,华中科技大学电气学院matlab选修课大作业pi控制器的设计...
  2. 【Android Demo】悬浮窗体实现
  3. 跟锦数学2017年04月
  4. mongo java mapreduce_MongoDB中MapReduce介绍与使用
  5. sfm点云代码_VisualSFM使用方法与心得
  6. html图标框架中文版,常见css框架有哪些?
  7. Docker学习总结(69)—— 不用 Docker 如何构建容器
  8. vSphere vsan 6.5部署之一VCSA6.5安装
  9. Dom4j中getStringValue()和getText()用法的区别
  10. 浏览器 远程桌面连接到服务器,在浏览器中嵌入远程桌面
  11. .net分流抢票助手
  12. Flixel Dame 坦克大战(二)Dame-editor使用指南
  13. 一文获取36个Python开源项目,平均Star 1667,精选自5000个项目
  14. 我的世界java版怎么加整合包_我的世界java如何下载安装optifine和forge及整合包和常见问题[纯小白教程]...
  15. 怎么看懂晦涩难懂的书
  16. JSON扩展类——JsonHelper
  17. dubbo 监控中心配置
  18. Mybatis数据持久化
  19. Ineffective mark-compacts near heap limit Allocation failed-JavaScript heap out of memory vue项目内存溢出
  20. seo策略_调整移动用户的SEO策略

热门文章

  1. 最简单的针孔相机模型标定方法,使用Matlab进行快速可视化相机标定,小白专用,超详细
  2. 微课教学视频制作成品展示
  3. [230511] 2021年托福阅读真题第8篇|The Roots of Economic Transformation in England|16:55~17:30|22:6+|9:37-11:37
  4. 相机SDK开法调用工作流程
  5. Highcharts创建条形图竞赛显示时间序列
  6. mac压缩文件自动添加.DS_Store
  7. dmp数据覆盖恢复(自用 记录)
  8. 驱动中动态创建设备号、设备节点
  9. 采用hxd019d传输数据相关
  10. layui数据表格隐藏列,如ID列方法