zoukankan      html  css  js  c++  java
  • Proxy + Reflect 实现 响应的数据变化

    Proxy 对象用于定义基本操作的自定义行为(如属性查找,赋值,枚举,函数调用等)

    let p = new Proxy(target, handler);

    • get(target, propKey, receiver):拦截对象属性的读取,比如proxy.fooproxy['foo']
    • set(target, propKey, value, receiver):拦截对象属性的设置,比如proxy.foo = vproxy['foo'] = v,返回一个布尔值。
    let handler  = {
          get(target,key) {
               //如果得到的值是一个对象我们还得再调一次
               if(typeof target[key]=='object') {
                return  new  Proxy(target[key],handler)
             }
               return Reflect.get(target,key);
          },
          set(target,key,value) {
               if(key==='length') {
                    return  true;
               }
               update();
               return  Reflect.set(target,key,value);
          }
    };
    let obj = {
         a:{a:1},
         b:2,
         d:[1,2,3,4]
    };
    function  update() {
         console.log('更新视图')
    };
    let  p = new  Proxy(obj,handler);
    obj.c=3;
    console.log(obj)
    Reflect.get(target,key);   相当于    target{key] 
     Reflect.set(target,key,value);   相当于  target[key}= value;



    输出:
    { a: { a: 1 }, b: 2, d: [ 1, 2, 3, 4 ], c: 3 }





     
  • 相关阅读:
    php 3des加密解密
    mysql 用命令导入导出
    ubuntu16.04对硬盘进行分区格式化并设置开机自动挂载
    nginx
    iostat (转https://www.cnblogs.com/ftl1012/p/iostat.html)
    zabbix
    zabbix
    mac 录屏
    利用elasticsearch-dump实现es索引数据迁移附脚本
    rdbtool
  • 原文地址:https://www.cnblogs.com/guangzhou11/p/11360800.html
Copyright © 2011-2022 走看看