zoukankan      html  css  js  c++  java
  • 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]);

    })

    这样就可以取到了

  • 相关阅读:
    致5年后的自己
    基础知识回顾——属性
    基础知识回顾——类和对象
    基础知识回顾——面向对象编程
    基础知识回顾——函数
    基础知识回顾——流程控制
    基础知识回顾——列表和字典
    基础知识回顾——元组和字符串
    基础知识回顾——通用序列操作
    XPath Checker和Firebug安装与使用
  • 原文地址:https://www.cnblogs.com/ellen-mylife/p/11083016.html
Copyright © 2011-2022 走看看