zoukankan      html  css  js  c++  java
  • proxy和reflect

    proxy代理指定对象的常规操作
    let person = {
        name:'tom',
        age:18
    }
    
    参数1:被代理对象
    参数2:handle()
    let personProxy = new Proxy(person,{
        get:function(target,key){
            console.log(`person的${key}属性被读取了`);
            return target[key]
        },
        set:function(target,key,value){
            console.log(`person的${key}属性被修改了`);
            target[key] = value;
            return true;
        }
    })
    通过代理对象来操作被代理对象
    personProxy.name//tom 调用了proxy中handler的get方法
    personProxy.name = 'mickey'
    
    
    reflect
    Reflect.get(person,'name');//mickey
    Reflect.set(person,'age',18);//修改成功age:18
    
    proxy和reflect结合使用
    let personProxy = new Proxy(person,{
        get:function(target,key){
            console.log(`person的${key}属性被读取了`);
            // return target[key]
            return Reflect.get(target,key)
        },
        set:function(target,key,value){
            console.log(`person的${key}属性被修改了`);
            /*target[key] = value;
            return true;*/
            return Reflect.set(target,key,value);
        }
    })
    
    使用reflect获取symbol属性
    let s1 = Symbol.for('score');
    person[s1] = 88;
    for(let key in person){
        console.log(key);
    }
    console.log(person);
    Reflect.ownKeys(person);
  • 相关阅读:
    找水王续
    大道至简-阅读笔记01
    第二阶段冲刺(第二天)
    第二阶段冲刺(第一天)
    找小水王
    《大道至简》阅读笔记02——关于项目经理
    学习进度第十二周
    找水王
    学习进度第十一周
    博客园用户体验
  • 原文地址:https://www.cnblogs.com/lisa2544/p/15654637.html
Copyright © 2011-2022 走看看