• es6-Symbol用法


    1.symbol概念

    这种数据类型提供独一无二值

    比如,在JS中,我可以通过数据类型生成变量a=number05,也可以生成b=nubmer05,这两个变量可以说是相等的。 但是用symbol生成的值是不重复,不相等,比如我用symbol生成a,b,a和b是不相等的。

    2.symbol的作用

    声明

    { let a1=Symbol();

    let a2=Symbol();

    console.log(a1===a2); }

    结果为false

    { let a3=Symbol.for('a3');//第二个a3 为key值,在使用时会检验全局有没有注册过这个key值

    let a4=Symbol.for('a3'); console.log(a3===a4); }

    结果为true

    因为两个取值的key值都是一样的

    使用

    { let a1=Symbol.for('abc');

    let obj={

    [a1]:'123',//这里加上[]是为了取外面定义的a1的值,也就是abc

    'abc':345,//虽然上面那个名字现在也叫abc,但那一个是Symbol变量

    'c':456

    }

    console.log(obj); }

    for(let [key,value] of Object.entries(obj))

    {  console.log("qq",[key,value]);  }

    entries是拿不到Symbol的值的

    要拿到Symbol的值

    Object.getOwnPropertySymbols(obj).forEach(function(item)

    {  console.log(obj[item]);  })

    得到的结果是123

    Object.getOwnPropertySymbols()取得的结果是一个数组

    可以用forEach遍历

    如果我们希望obj像普通对象一样取到所以值

    我们可以使用Reflect.ownKeys(),取到的值也是一个数组

    Reflect.ownKeys(obj).forEach(function(item){  console.log('ownKeys',item,obj[item]);

    })

    这样就可以取到了

  • 相关阅读:
    Redis初启(一)
    分布式架构下的通信(一)
    Python学习笔记:本月、上月、次月生成
    Python学习笔记:字符串转换为时间对象
    超级详细的mysql数据库安装指南
    net core 3.1 mvc string接收为null解决方案
    linux 连接跟踪 conntrack
    Cilium 数据链路
    strace/perf trace 使用
    quagga 部署启动BGP
  • 原文地址:https://www.cnblogs.com/ellen-mylife/p/11083016.html
Copyright © 2020-2023  润新知