1.symbol:ES6引入新类型Symbol,表示独一无二的值. 作为JavaScript语言的第7种类型。
2.最大的用途:用来定义对象的私有变量
3.创建是利用symbol()来创建 ,里面的参数则是symbol实例的描述,主要是用来控制台显示,或转换为字符串时比较容易区分
4.Symbol函数前不能使用new命令,因为生成的Symbol是一个原始类型的值,不是对象。
5.如果Symbol的参数是一个对象,就会调用其toString方法,将其转换为字符串,然后才生成一个Symbol值。
6.Symbol函数的参数只表示当前Symbol值的描述。相同参数的Symbol函数的返回值是不相等的。
7.Symbol值不能与其他类型的值进行运算,否则会报错。
8.Symbol值可以显式的转换为字符串。
9.Symbol值可以显式的转换为布尔值,但不能转换为数值。
symbol作为对象属性名
对一个对象由多个模块构成的情况非常有用,能防止一个键被不小心改写或覆盖。
1.该属性不会出现在for…in,for…of中,也不会被Object.keys(),object.getOwnpropertyNames()返回。
可使用Object.getOwnpropertySymnols()方法获取指定对象的所有Symbol属性
2.Symbol值作为属性名时不能使用点运算符
3.在对象内部使用Symbol值定义属性时,Symbol值必须放在方括号中。
4.Symbol类型可以用于定义一组常量,保证这组常量的值都是不相等的。