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. 七种编程语言的学习曲线
  2. 网格弹簧质点系统模拟(Spring-Mass System by Verlet Integration)附源码
  3. 未能加载文件或程序集或它的某一个依赖项_手写一个miniwebpack
  4. Git初学札记(三)————创建Git版本库
  5. 透视变换--基于getPerspectiveTransform()及像素赋值(未涉及插值)
  6. fastjson php,Fastjson JSONPath
  7. Css3新特性应用之形状
  8. 用HTML5/CSS3/JS开发Android/IOS应用
  9. 导入 ArcMap 文档
  10. STM32 学习十 Flash下载与调试
  11. 国自然标书,600多份成功申请基金的标书 可下载
  12. matlab fgetc,C语言fgetc和fputc函数用法详解(以字符形式读写文件)
  13. python数据分析实战之阿里巴巴股票行情分析
  14. 一文看懂线性回归和非线性回归
  15. 警猫眼Arduino源码分享,把闲置手机变成安防监控摄像头!
  16. 基于51单片机的APDS9960 驱动
  17. 智慧经营系统有什么功能?数字会员了解一下
  18. 单片机毕业设计 stm32智能温控风扇设计与实现 - 嵌入式 物联网
  19. 单片机c语言慧尾灯编码,基于AT89S52单片机的汽车LED尾灯控制器设计毕业论文+电路仿真+PCB+程序源码...
  20. enet分割_[论文笔记] 图像语义分割——ENet(ICLR 2017)

热门文章

  1. 2020搞个 Mac 玩玩
  2. 马云:宁可死在来往的路上,也绝不活在微信的群里
  3. 【Deep Snake】DeepSnakeforReal-TimeInstanceSegmentation
  4. Kurento 客户端
  5. android学习记录3:自定义状态栏颜色(android4.4以上)
  6. 小米/红米开启游戏消息屏蔽
  7. uniapp + renderjs + heatmap.js 实现热力图
  8. Java多线程实现方式
  9. 如何快速拆分Excel表格呢
  10. mysql入门题库:(1)数据库50题