es6基础0x022:Symbol

发布时间:2019-08-09 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了es6基础0x022:Symbol脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

0x000 概述

Symboles6新的基本数据类型,所以es之后的数据类型如下:

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

脚本宝典总结

以上是脚本宝典为你收集整理的es6基础0x022:Symbol全部内容,希望文章能够帮你解决es6基础0x022:Symbol所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。