Symbol实际上是ES6引入的一种原始数据类型,除了Symbol,JavaScript还有其他5种数据类型,分别是Undefined、Null、Boolean、String、Number、对象,这5种数据类型都是ES5中就有的。
1、创建实例:symbol不能用new命令来实例化,否则报错。
// symbol 的实例 let sy1 = Symbol('key1'); let sy2 = Symbol('key1'); let sy3 = Symbol('key3'); console.log(sy1); // Symbol('key1'); console.log(sy1 === sy2); // false console.log(typeof (sy1)); // 'symbol'
symbol的参数是一个字符串,也可以是一个对象,会把对象调用toString进行转换
2、symbol 的作用是防止对象属性名都是字符串容易造成属性名的冲突。
console.log(sy1 === sy2); // false
sy1 不等于 sy2 是因为symbol表示独一无二的值。
let obj = { name: 'tom' } obj.name = 'lusi';
这里的obj.name被重写了,
3、symbol的作用:
const COLOR_red = Symbol('red'); const COLOR_yellow = Symbol('yellow'); const COLOR_blue = Symbol('blue'); function getConstantName(color) { switch (color) { case COLOR_red : return "COLOR_RED"; case COLOR_yellow : return "COLOR_YELLOW "; case COLOR_blue: return "COLOR_BLUE"; default: // throw new Exception('Can\'t find this color'); return "COLOR_not"; } } console.log(getConstantName(COLOR_red));