- 在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還有很多高級的操作