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]);

})

这样就可以取到了

 

转载于:https://www.cnblogs.com/ellen-mylife/p/11083016.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值