- 在ES6之前,js的的基本数据类型有
String Number Null Boolean undefined Object
6中数据类型,Symbol是一种新增加的基本数据类型
特性
- Symbol 不需要new关键字,他是原始类型,不是对象
- Symbol 不论参数是否相等,他返回值都不相等
var a = Symbol()
var b = Symbol()
console.log(a===b) //false
//参数相等的情况下
var demo = Symbol('测试')
var demo1 = Symbol('测试1')
console.log(demo===demo1) //false
- 可以显示转为字符串
var obj = Symbol('字符串')
console.log(typeof String(obj)) //string
- 可以转为布尔值
- 不能转为数值
一般代表独一无二的值
使用
- 由于他是独一无二的,一般用它作为
属性名
,常量
var mySymbol = Symbol()
// 第一种用法
var obj = {}
obj[mySymbol] = 'Hello!'
//第二种
var a = {
[mySymbol]: 'Hello!'
}
//获取时需要注意的事项
//想要获取,不能使用丶,需要使用方括号,因为丶会被认为是一个变量字符串,而不是一个Symbol
a['mySymbol'] = "Hello!"
例子
使用Symbol我们可以制作一个switch的分支,并且这个分支不会出现冲突
const DEBUG = Symbol()
const ERROR = Symbol()
switch(type){
case DEBUG:
console.log('我是debug状态')
break;
case ERROR:
console.log('我是error状态')
break;
}
- 上面的这些足够应付一些简单的应用了,当然Symbol还有很多高级的操作