• ES6-11学习笔记--Reflect


    Reflect 映射

    将Object属于语言内部的方法放到Reflect上
    修改某些Object方法的返回结果,让其变得更合理
    让Object操作编程函数行为
    Reflect对象的方法与Proxy对象的方法一一对应
     
     
    Object的一些方法抽离到Reflect,减小Object体量,增加代码可读性:
    let obj = {}
    let newVal = ''
    Reflect.defineProperty(obj, 'name', {
        get() {
            console.log('get');
            return newVal
        },
        set(val) {
            console.log('set');
            newVal = val
        }
    })
    

      

    让原有方法增加返回值,让方法更加合理
    Object.defineProperty() // 没有返回值
    Reflect.defineProperty() // 返回布尔值
    

      

    以前的命令式操作改为函数式操作:
    console.log('assign' in Object); // true
    console.log(Reflect.has(Object, 'assign')); // true
    

      

    Reflect和Proxy一一对应:
    let arr = [1, 2, 3]
    arr = new Proxy(arr, {
        get(target, prop) {
            console.log(`target:${target}  prop:${prop}`);
            // return prop in target ? target[prop] : 'error'
            return prop in target ? Reflect.get(target, prop) : 'error'
        }
        // 其他set等钩子也是一一对应
    })
    console.log(arr[1]);
    

      

    放弃安逸,持续努力——成长
  • 相关阅读:
    PowerMockito
    java--树封装
    plugin--Lombok
    Mysql--sql
    Oracle--sql
    hive--分区表和分桶表
    hive支持的数据类型和存储格式
    HashMap
    golang 创建 tun 设备
    golang ctrie demo
  • 原文地址:https://www.cnblogs.com/MarsPGY/p/14832110.html
Copyright © 2020-2023  润新知