原始类型: 字符串、数字型、布尔型、null、undefined、Symbol
创建 Symbol
通过全局的 Symbol 函数创建,生成的是一个全局唯一的值。
let a = Symbol()
Symbol函数接收一个可选参数,用于描述即将创建的Symbol,这个描述被存储在[[Description]]
属性中,不能在代码中直接访问,只是用于代码阅读和调试的。
let a = Symbol('description')
共享 Symbol
要创建一个可共享的 Symbol,需要使用 Symbol.for()
方法,它只接受一个参数,用于描述创建的 Symbol。
let uid = Symbol.for('uid')
let uid2 = Symbol.for('uid')
uid === uid2
es6 中提供了一个全局 Symbol 注册表,Symbol.for() 方法首先在全局 Symbol 注册表中查找描述为 uid 的 Symbol 是否存在,如果存在直接返回,不存在创建一个新的 Symbol,并将其描述注册在全局 Symbol 注册表中。
同时提供 Symbol.keyFor()
方法查找一个 Symbol 在全局 Symbol 注册表中对应的描述。