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

})

这样就可以取到了

 

posted @ 2019-06-25 15:18  ellenxx  阅读(1675)  评论(0编辑  收藏  举报