es6基礎0x022:Symbol

0x000 概述

Symboles6新的基本數據類型,所以es之後的數據類型如下:

  • 基本數據類型:

    • Boolean
    • Null
    • Undefined
    • Number
    • String
    • Symbol
  • 引用類型

    • Object

0x001 Symbol()

  • 語法

    Symbol([description])
    • description:描述,可選字符串
  • 例子

    Symbol()
    Symbol(1)
    Symbol('string')
  • 說明:
    使用Symbol()初始化的變量是完全不同的兩個變量,description只是一個描述而已,沒有任何意義。

    Symbol(1)===Symbol(1) // false

    可以使用typeof來判斷Symbol類型

    typeof Symbol('1')
    // "symbol"

0x002 Symbol.for()

  • 語法:

    Symbol.for(key);
    • key:與該Symbol相關連的一個名字,可以通過這個名字獲取Symbol實例。
  • 例子:

    Symbol.for(1)
    Symbol.for('string')
  • 說明:
    Symbol()實例化的Symbol實例不同,使用Symbol.for()實例化的實例在全局保存,相同的兩個key返回的Symbol實例是一樣的。也就是說,使用Symbol.for(key)實例化一個Symbol數據類型的時候,如果全局不存在這個key對應的symbol,則全局創建一個key對應的symbol,如果全局存在,則直接返回這個key對應的Symbol

    Symbol.for('string')===Symbol.for('string')
    // true

0x003 Symbol.keyFor(key)

  • 語法

    Symbol.keyFor(sym);
    • 參數:

      • symSymbal實例
    • 返回值:

      • string:返回這個Symbol實例的key
  • 例子

    let sym=Symbol.for('string')
    console.log(Symbol.keyFor(sym)) // 'string'
  • 說明
    Symbol(description)descriptionSymbol.for(key)key是不一樣的,description只是一個描述,除了調試沒有任何實際用途,無法通過description獲取這個Symbol實例:

    let sym= Symbol('sss')
    Symbol.for('sss')===sym  // false
    Symbol.keyFor(sym) // undefined 

    所以,Symbol.keyFor也只能獲取Symbol.for實例化的Symbolkey

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章