js中新增的Symbol


  • 在ES6之前,js的的基本數據類型有String Number Null Boolean undefined Object6中數據類型,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還有很多高級的操作


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM