ES6-----学习系列九(Symbol数据类型)

Posted diasa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES6-----学习系列九(Symbol数据类型)相关的知识,希望对你有一定的参考价值。

Symbol是es6新的数据类型。

  Symbol所声明的值是唯一的,独一无二的。永远不可能相等。Symbol.for(key) 先检查是否声明了key值  如果未声明就相当于调用Symbol  如果已经声明了 就相当于获取这个Symbol

{
  // 声明
  let a1=Symbol();
  let a2=Symbol();
  console.log(a1===a2);//false
  let a3=Symbol.for(‘a3‘);
  let a4=Symbol.for(‘a3‘);
  console.log(a3===a4);//true
}

  Symbol的使用  可以使用Symbol声明属于自己的唯一的变量  当其他继承他的也可以声明同名属性 而不会报错  注意:Symbol声明的变量for of是不能获取到的

  可以通过Object.getOwnPropertySymbols()获取Symbol变量  

  如果需要获取所有包括Symbol和非Symbol的属性  可以通过Reflect.ownKeys()来进行获取  (Reflect也是es6新增的方法,后续会进行总结)

{
  let a1=Symbol.for(‘abc‘);
  let obj={
    [a1]:‘123‘,
    ‘abc‘:345,
    ‘c‘:456
  };
  console.log(‘obj‘,obj);

  for(let [key,value] of Object.entries(obj)){
    console.log(‘let of‘,key,value);//adc  c
  }

  Object.getOwnPropertySymbols(obj).forEach(function(item){
    console.log(obj[item]);
  })

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

 

以上是关于ES6-----学习系列九(Symbol数据类型)的主要内容,如果未能解决你的问题,请参考以下文章

ES6 从入门到精通 # 09:Symbol 类型

ES6 从入门到精通 # 09:Symbol 类型

ES6新特性使用小结

ES6笔记-- Symbol类型

ES6学习小结5:何为symbol?

es6学习-9