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
: