ES6新增Symbol类型

2019-06-19  本文已影响0人  易路先登

我们经常要用到使用唯一性变量的场景,以前都自己封装UUID了之类的函数来得到,ES6专门提供了一种数据类型Symbol来提供唯一性的值;

1 使用Symbol()函数获取Symbol变量
let a = Symbol();
console.log(typeof a);//symbol
let b = Symbol();
console.log(a==b,a===b);//false false

注意:Symbol() S虽然大写,但这只是个函数,获取Symbol变量时并未使用new关键字

2 使用Symbol.for(arg)在Symbol变量中混入自定义值
let a = Symbol.for('my');
let b = Symbol.for('my');
console.log(a==b,a===b);//true true

注意:不要因为a和b相等判断为true就认为这个值不是唯一性值了,而是因为Symbol.for(arg)函数会检测有没有与arg相关的Symbol类型,如果有就返回,如果没有才新建。所以上述代码中a和b本来就是指向了一个Symbol变量,当然相等了。

3 遍历Symbol属性,有对象如下
let a = Symbol.for('my');
let obj = {
  [a]:'qiang',
  age:18
}
for(let [key,value] of Object.entries(obj)){
    console.log(key,value);
}
//age 18
Object.getOwnPropertySymbols(obj).forEach(function(item){
  console.log(item,obj[item]);
})
//Symbol('my') qiang
Reflect.ownKeys(obj).forEach(function(item){
  console.log(item,obj[item]);
})
//age 18
//Symbol('my') qiang

ES6总篇--目录

上一篇 下一篇

猜你喜欢

热点阅读