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

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

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
相关文章
相关标签/搜索