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);
  • 相关阅读:
    嵌入式和就业(转)
    [转] 电子技术·笔记1(9月份)
    ERP系统
    Win7 启动修复
    A1pass大大对黑客学习的建议
    你凭什么能过上你想要的生活?
    Hacker需要掌握的基础
    Hacker学习发展流程图
    硬盘SMART参数解释
    u盘的一些理解
  • 原文地址:https://www.cnblogs.com/lisa2544/p/15654637.html
Copyright © 2011-2022 走看看