当前位置: 首页 > article >正文

浅谈 proxy

应用场景

Vue2采用的defineProperty去实现数据绑定,Vue3则改为Proxy,遇到了什么问题?

- 在Vue2中不能检测数组和对象的变化

1. 无法检测 对象property 的添加或移除

var vm = new Vue({
  data:{
    a:1
  }
})

// `vm.a` 是响应式的

vm.b = 2
// `vm.b` 是非响应式的

2. 不能检测以下数组的变动 

  • 利用索引直接设置一个数组项时
  • 修改数组的长度
var vm = new Vue({
  data: {
    items: ['a', 'b', 'c']
  }
})
vm.items[1] = 'x' // 不是响应性的
vm.items.length = 2 // 不是响应性的

Vue 3 使用Proxy对象来实现响应式数据绑定和属性收集。Proxy可以代理整个对象,而不仅仅是对象的已有属性,并且能够更好地处理数组和新增属性等情况 

基本用法

defineProperty

      let a = 2;
      let b = 3;
      let c = a + b;
      const obj = {};
      console.log(c);
      Object.defineProperty(obj, 'a', {
        get() {
          return a;
        },
        set(newVal) {
          a = newVal;
        c= a+b
        },
        enumerable: true,
        configurable: true,
      });
      Object.defineProperty(obj, 'b', {
        get() {
          return b;
        },
        set(newVal) {
          b = newVal;
          c= a+b
        },
        enumerable: true,
        configurable: true,
      });
      obj['a'] = 10
      console.log(c);

 

Proxy

  let numArr = [3, 6, 9];

      numArr = new Proxy(numArr, {
        get(target, prop) {
          if (prop in target) {
            return target[prop];
          } else {
            return 0;
          }
        },
      });

      console.log(numArr[1]); // 6
      console.log(numArr[7]); // 0

 

最后

Proxy又有啥问题呢,为啥需要和Reflect配合? 我们后续再做探讨~


http://www.kler.cn/a/407890.html

相关文章:

  • OCR-free Document Understanding Transformer
  • 数据结构与算法——1122—复杂度总结检测相同元素
  • 排序算法(选择排序、直接插入排序、冒泡排序、二路归并排序)(C语言版)
  • 3D Gaussian Splatting在鱼眼相机中的应用与投影变换
  • 身份证实名认证API接口助力电商购物安全
  • 由于centos停更,yum、docker等不支持,采用阿里云仓库搭建K8S
  • C++中的初始化列表
  • 如何设计和实现通用唯一 Code 生成方法
  • 从数据提取到管理:TextIn平台的全面解析与产品体验
  • Elasticsearch客户端在和集群连接时,如何选择特定的节点执行请求的?
  • 网络安全 - DOS
  • 解决k8s拉取私有镜像401 Unauthorized 问题
  • 二分排序
  • vue基于高德地图实现城市管网压力点、管线、测距、测面积、绘制多边形、绘制圆代码
  • React 组件生命周期
  • uniapp调整webview的大小与位置,解决遮挡问题
  • ElementUI之el-date-picker禁选配置
  • ESP8266 AP模式TCP服务器 电脑手机网络调试助手
  • 设计模式-创建型-原型模式
  • aws 小白入门,VPC 子网、路由表、互联网网关
  • 链表算法速成计划
  • 探索C++中的map和set容器
  • 【jvm】从字节码角度看待对象创建流程
  • Claude Opus MetaPrompt 系统详解
  • 论文阅读 SimpleNet: A Simple Network for Image Anomaly Detection and Localization
  • 【C++】踏上C++学习之旅(十):深入“类和对象“世界,掌握编程黄金法则(五)(最终篇,内含初始化列表、静态成员、友元以及内部类等等)