let sym =Symbol('My symbol');"your symbol is "+ sym
// TypeError: can't convert symbol to string`your symbol is ${sym}`// TypeError: can't convert symbol to string
Symbol 值可以显式转为字符串。
let sym =Symbol('My symbol');String(sym)// 'Symbol(My symbol)'
sym.toString()// 'Symbol(My symbol)'
Symbol值可以转换为布尔值,但是不能转为数值
let sym =Symbol();Boolean(sym)// true!sym // falseif(sym){// ...}Number(sym)// TypeError: Cannot convert a Symbol value to a numberat Number (<anonymous>)
sym +2// TypeError
let mySymbol =Symbol();// 第一种写法let a ={};
a[mySymbol]='Hello!';// 第二种写法let a ={[mySymbol]:'Hello!'};// 第三种写法let a ={};
Object.defineProperty(a, mySymbol,{ value:'Hello!'});// 通过Object.defineProperty,将对象的属性名指定为一个Symbol值// 以上写法都得到同样结果
a[mySymbol]// "Hello!"