深入理解ES6-6.Symbol

42 阅读1分钟

原始类型: 字符串、数字型、布尔型、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 注册表中对应的描述。

Symbol 不可以强制类型转换