-
概述:
Symbol 数据类型是一种类似于字符串的数据类型,用来表示独一无二的值。
凡是属性名属于Symbol 类型,可以保证不会与其他属性名产生冲突。
Symbol 函数不能使用 new 命令,且可以接受一个字符串作为参数,表示对 Symbol 实例的描述。
相同参数的Symbol 函数的返回值是不相等的。且Symbol 值不能与其他类型的值进行运算。
Symbol 值也可以转为布尔值,但是不能转为数值。
let s = Symbol();
let s1 = Symbol('s1') //参数只是表示对当前Symbol 值的描述。
let s2 = Symbol('s1')
//即使是相同参数的Symbol 函数的返回值是不相等的
s2 === s1 //false
// Symbol 值不能与其他类型的值进行运算,会报错。
"your symbol is " + s1 // TypeError: can't convert symbol to string
//Symbol可以显示转换为字符串,布尔值。但不能转为数值
String(s1) or s1.toString() // "Symbol(s1)"
Boolean(s1) // true
Number(s1) //"Cannot convert a Symbol value to a number"
-
Symbol.prototype.description 读取Symbol 数据类型时的描述
let s = Symbol("s");
s.description // "s"
-
用途
(1)作为对象的属性名,保证不会出现同名的属性。但Symbol 值作为对象属性名时,不可以用点运算符来取值与定义属性。
只能用大括号[]定义属