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

    原文作者:followWinter
    原文地址: https://segmentfault.com/a/1190000017068491
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞