proxy和Object.defineProperty


const obj = {
  a: 1,
  d: 2,
  c: {
    a: 1,
    b: 2,
  },
};
function _isObject(v) {
  return typeof v === "object" && v !== null;
}
function observe(obj) {
  for (const k in obj) {
    let v = obj[k];
    if (_isObject(v)) {
      observe(v);
    }
    Object.defineProperty(obj, k, {
      get() {
        console.log(k, "读取");
        return v;
      },
      set(val) {
        if (val !== v) {
          console.log(k, "更改");
          v = val;
          return v;
        }
      },
    });
  }
}

observe(obj);
// obj.a = 3;
obj.c.a = 5

// Object.defineProperty是对对象里的每一个属性一一进行监听,
// 就要深度遍历里面的所有属性,第一次观察后,再新增/删除属性,无法监听到
// Proxy是针对整个对象进行监听,产生新的代理对象进行监听

相关推荐

  1. proxyObject.defineProperty

    2024-03-14 15:22:04       43 阅读
  2. proxy

    2024-03-14 15:22:04       42 阅读
  3. 数据响应式(Object.definePropertyProxy)

    2024-03-14 15:22:04       22 阅读
  4. es6 proxy的作用用法

    2024-03-14 15:22:04       33 阅读
  5. Nginx系列-4 proxy_pass使用路径拼接问题

    2024-03-14 15:22:04       20 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-14 15:22:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-14 15:22:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-14 15:22:04       82 阅读
  4. Python语言-面向对象

    2024-03-14 15:22:04       91 阅读

热门阅读

  1. Linux 用户和用户组管理

    2024-03-14 15:22:04       36 阅读
  2. ubuntu22.04环境中安装pylint

    2024-03-14 15:22:04       36 阅读
  3. 高通qcm2290功耗问题

    2024-03-14 15:22:04       36 阅读
  4. 数据类型(面向对象)

    2024-03-14 15:22:04       28 阅读
  5. YOLOv8模型验证以及一些报错

    2024-03-14 15:22:04       44 阅读
  6. 代码随想录day39:动态规划part7,完全背包继续

    2024-03-14 15:22:04       37 阅读
  7. django根据时间(年月日)动态修改表名--方法二

    2024-03-14 15:22:04       40 阅读
  8. ES6 Nunber类型、Math对象扩展

    2024-03-14 15:22:04       38 阅读
  9. IOS面试题object-c 81-90

    2024-03-14 15:22:04       42 阅读
  10. mysql数据库备份恢复

    2024-03-14 15:22:04       37 阅读
  11. Python: for,while循环语句

    2024-03-14 15:22:04       51 阅读
  12. JDK、JRE和JVM的区别

    2024-03-14 15:22:04       38 阅读
  13. 后端各种格式传参混合vue前端传参

    2024-03-14 15:22:04       44 阅读
  14. FFmpeg--packet数据包和frame数据帧的区别

    2024-03-14 15:22:04       34 阅读