1. 程式人生 > >ES6-07:Symbol數據類型

ES6-07:Symbol數據類型

tor var pre 私有 類型 耦合 primitive div 一個

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

ES6-07:Symbol數據類型