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);

效果展示

相关推荐
非优秀程序员13 小时前
第10章 千团出世|《互联网产品恩仇录》
前端
非优秀程序员13 小时前
第11章 小高在对面|《互联网产品恩仇录》
前端
非优秀程序员13 小时前
第14章 只剩美团|《互联网产品恩仇录》
前端
非优秀程序员13 小时前
第09章 老乡何必为难老乡|《互联网产品恩仇录》
前端
非优秀程序员13 小时前
第07章 孙德良的阳谋|《互联网产品恩仇录》
javascript·后端
非优秀程序员13 小时前
第03章 三大门户,烽烟起于瀛海威|《互联网产品恩仇录》
前端
程序员大阳17 小时前
HTML+CSS+JS对话式实战(5)-活动管理页之查看报名名单的实现
javascript·css·html·查看报名名单
曦樂~17 小时前
【Web Development】02 CSS
前端·css
风骏时光牛马18 小时前
后端服务接口开发与数据逻辑处理
前端
东鹏特饮18 小时前
经典打砖块(Breakout)游戏
前端·css·css3