1

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


followWinter
1.5k 声望82 粉丝

暂时没有