1.什么是Symbol
表示独一无二的值,它是js中的第七种数据类型。
基本数据类型 : Null,Undefined,Number,Boolean,String,Symbol
引用数据类型:Object
2.为什么要引入Symbol这种数据类型?
在ES5中,对象的属性名都是字符串,这样就很容易造成命名冲突,比如说大家在扩展一个对象的时候,你要添加一个新的方法,凡是恰巧这个方法名字和之前的属性名字冲突了,就会造成不必要的麻烦。
所以,为了从根本上解决这个问题,ES6引入了这种数据类型:Symbal,代表独一无二的值。
3.创建方式
通过系统内置的Symbal函数
let mySymbol = Symbol();
// 第一种写法
let a = {};
a[mySymbol] = 'Hello!';
// 第二种写法
let a = {
[mySymbol]: 'Hello!'
};
// 第三种写法
let a = {};
Object.defineProperty(a, mySymbol, { value: 'Hello!' });
// 以上写法都得到同样结果
a[mySymbol] // "Hello!"
Symbol函数接收一个字符串作为参数,表示对Symbol的描述,主要是为了在控制台显示,或者转为字符串的时候,比较容易区分
4.注意 :
- 不能用new创建,会报错。原因 : Symbol是一个原始类型的值,而不是一个对象。
- Symbol() 返回的是一个唯一的值,做一个key,定义一些唯一或者私有的一些变量
- 如果symbol作为key,用for in 循环不出来