资讯专栏INFORMATION COLUMN

es6基础0x022:Symbol

davidac / 1848人阅读

摘要:可以使用来判断类型语法与该相关连的一个名字,可以通过这个名字获取实例。例子说明和实例化的实例不同,使用实例化的实例在全局保存,相同的两个返回的实例是一样的。

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/108718.html

相关文章

  • ES6 Symbol ,对象匿名(anonymous)属性实现

    摘要:在运行时环境中,通过调用函数创建值,该函数动态生成匿名的唯一值。创建和使用值的唯一创建方法,是通过调用函数来返回,不支持操作。共享体系提供了一个全局注册表,用于在大文件或多文件代码中追踪值。 Symbol由来 Symbol是ES6引入的新类型,所以在ES5的基础上,JS就有了字符串(string)、数字型(number)、布尔(bool)、null、undefined和Symbol共六...

    JowayYoung 评论0 收藏0
  • 重学前端学习笔记(六)--JavaScript类型有哪些你不知道的细节?

    摘要:的码点被称为基本字符区域。关于的介绍,我准备用文档阮一峰来做一些介绍,具体的可以参考文档引入的原因的对象属性名都是字符串,这容易造成属性名的冲突。其他的一些属性可以去看文档阮一峰注意函数前不能使用命令,否则会报错。 笔记说明 重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系,笔者主要整理学习过程的一些要点笔记以及感悟,完...

    Lsnsh 评论0 收藏0
  • 重学前端学习笔记(六)--JavaScript类型有哪些你不知道的细节?

    摘要:的码点被称为基本字符区域。关于的介绍,我准备用文档阮一峰来做一些介绍,具体的可以参考文档引入的原因的对象属性名都是字符串,这容易造成属性名的冲突。其他的一些属性可以去看文档阮一峰注意函数前不能使用命令,否则会报错。 笔记说明 重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系,笔者主要整理学习过程的一些要点笔记以及感悟,完...

    joyvw 评论0 收藏0
  • 重学前端学习笔记(六)--JavaScript类型有哪些你不知道的细节?

    摘要:的码点被称为基本字符区域。关于的介绍,我准备用文档阮一峰来做一些介绍,具体的可以参考文档引入的原因的对象属性名都是字符串,这容易造成属性名的冲突。其他的一些属性可以去看文档阮一峰注意函数前不能使用命令,否则会报错。 笔记说明 重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系,笔者主要整理学习过程的一些要点笔记以及感悟,完...

    jonh_felix 评论0 收藏0
  • 重学前端学习笔记(六)--JavaScript类型有哪些你不知道的细节?

    摘要:的码点被称为基本字符区域。关于的介绍,我准备用文档阮一峰来做一些介绍,具体的可以参考文档引入的原因的对象属性名都是字符串,这容易造成属性名的冲突。其他的一些属性可以去看文档阮一峰注意函数前不能使用命令,否则会报错。 笔记说明 重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系,笔者主要整理学习过程的一些要点笔记以及感悟,完...

    zlyBear 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<