ES6之新数据类型Symbol
在ES5中基本数据类型有六种:
- Number
- Boolean
- String
- Object
- Null
- Undefined
引入目的
在ES6中新增了的数据类型Symbol,这种数据类型解决了对象的属性名冲突问题,保证了键名的唯一性,使创建的每一个变量都独一无二。
特点
创建方法:Symbol(【参数】) 此函数会返回一个Symbol类型的数据,看似字符串,但其实是一种独特的基本数据类型
-
参数可选:上述函数中的参数是可选的,如果不传入参数,返回的均为Symbol(),为了区分可以加入参数:
let a = Symbol('a'); let b = Symbol('b');
注意无论加不加参数,返回的Symbol()都不相同
let a = Symbol(); let b = Symbol(); console.log(a == b); //false
-
创建key值:使用Symbol.for(【参数】)可以保证返回的数据相同
let a = Symbol.for('a'); let b = Symbol.for('a'); console.log(a == b); //true
使用
-
对象中直接使用
let a = Symbol.for('e'); let obj = { [a]:1, e:2, a:3 }
有没有感觉属性名都是一样的呢?其实不然,打印obj
可以看到属性名都没有重复出现,Symbol创建的属性名解决了冲突问题