脚本宝典收集整理的这篇文章主要介绍了es6基础0x022:Symbol,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
0x000 概述
Symbol
是es6
新的基本数据类型,所以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);
-
参数:
-
sym
:Symbal
实例
-
返回值:
-
string
:返回这个Symbol
实例的key
-
例子
let sym=Symbol.for('string')
console.LOG(Symbol.keyFor(sym)) // 'string'
-
说明
Symbol(description)
的description
和Symbol.for(key)
的key
是不一样的,description
只是一个描述,除了调试没有任何实际用途,无法通过description
获取这个Symbol
实例:
let sym= Symbol('sss')
Symbol.for('sss')===sym // false
Symbol.keyFor(sym) // undefined
所以,Symbol.keyFor
也只能获取Symbol.for
实例化的Symbol
的key
。
以上是脚本宝典为你收集整理的es6基础0x022:Symbol全部内容,希望文章能够帮你解决es6基础0x022:Symbol所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。