Vue3 proxy 数据响应式的简单实现

实现代码

javascript 复制代码
 	      const obj = { a: 1, b: 2, c: { a: 1, b: 2, c: 3 }, d: [1, 2, 3] };

      const handler = {
        get: (target, key) => {
          console.log(`获取数据::::${key} = ${target[key]}`);
          if (typeof target[key] === "object") {
            return observe(target[key]);
          }
          return target[key]; // Reflect.get(target, key)
        },
        set: (target, key, value) => {
          console.log(`设置数据::::${key} === ${value}`);
          target[key] = value; // Reflect.set(target, key, value)
        },
      };

      const observe = (target) => {
        if (typeof target !== "object") {
          return target;
        }

        const obj = new Proxy(target, handler);
        return obj;
      };

      const proxyValue = observe(obj);

      console.log(proxyValue);

效果展示

相关推荐
广州华水科技29 分钟前
单北斗GNSS在变形监测中的优势与应用分析
前端
程序员爱钓鱼1 小时前
Rust 变量与不可变性:为什么默认不能修改变量?
前端·后端·rust
随风一样自由2 小时前
【前端工程化】前端工程化解耦实践:从问题分析到架构重构
前端·重构·架构
vortex52 小时前
Web 渗透测试:未授权与越权漏洞全流程挖掘思路
前端
我有满天星辰2 小时前
【前端模块化】前端模块化演进之路:从脚本堆砌到标准统一
前端
我有满天星辰2 小时前
Vue 3 响应式双雄:ref 与 reactive 完全指南
前端·javascript·vue.js
随风一样自由11 小时前
【前端独角兽】刚进入前端领域的前端开发用jQuery还是Vue3?
前端·javascript·vue3·jquery
IMPYLH11 小时前
HTML 的 <data> 元素
前端·html
YHHLAI12 小时前
[特殊字符] 面试中的 Promise —— 从入门到精通
前端·javascript·面试
weixin_BYSJ198712 小时前
SpringBoot + MySQL 乒乓球运动员信息管理系统项目实战--附源码04954
java·javascript·spring boot·python·django·flask·php