Symbol
背景:ES5的对象属性名都是字符串,这容易造成属性名的冲突。ES6引入了一种新的原始数据类型Symbol,表示独一无二的值,它就是Symbol数据类型
特性
1. Symbol值通过Symbol函数生成,它是一种类似于字符串的数据类型
-----
let s = Symbol();
2. Symbol函数可以接受一个字符串作为参数,表示对Symbol实例的描述。即使参数相同,Symbol函数的返回值依旧是不相等的
-----
var s = Symbol('foo');
s//Symbol(foo)
var s1 = Symbol('foo');
var s2 = Symbol('foo');
s1 === s2 // false
3. Symbol值不能与其他类型的值进行运算
-----
var sym = Symbol('My symbol');
"your symbol is " + sym //error
`your symbol is ${
sym}` //error
4. Symbol值可以转为字符串、布尔值,但不能转为数值
-----
var s = Symbol();
s.toString()