ES6-07:新增数据类型—Symbol

ES5中规定JavaScript有6种数据类型:Undefined、Null、String、Boolean、Number、Object;ES6新增加一种数据类型Symbol.

1.symbol定义

  • 原始数据类型:不是对象,不能使用new命令创建,不能添加属性;
  • 表示独一无二的值:
Symbol()===Symbol();//false
Symbol('foo')===Symbol('foo');//false
Symbol.for('bar')===Symbol('bar');//true
  • symbol值作为属性名时,该属性是公开属性,非私有;
  • symbol作为属性时,不可被遍历;

2. 作用

  • 消除魔术字符串:消除代码内部强耦合;
  • 模块的单利模式:任何时候都返回同一个实例;
var CAT_KEY=Symbol.for('cat');
function Cat(){};
if(!global[CAT_KEY]){global[CAT_KEY]=new Cat()};

3.内置Symbol值——11个

  • Symbol.hasInstance
  • Symbol.isConcatSpreadable
    -Symbol.species
  • Symbol.match
  • Symbol.replace
  • Symbol.search
  • Symbol.split
  • Symbol.iterator
  • Symbol.toPrimitive
  • Symbol.toStringTag
  • Symbol.unscopable
原文地址:https://www.cnblogs.com/hbzyin/p/8111770.html