基本用法
根据规范,对象的属性键只能是字符串类型或者 Symbol 类型。不是 Number,也不是 Boolean,只有字符串或 Symbol 这两种类型。常用的场景:创建唯一记号。
- 初始化
let sym = Symbol();
// 支持传递参数
let bsym = Symbol('BBB');
- 创建时,我们可以给 Symbol 一个描述(也称为 Symbol 名),这在代码调试时非常有用:
let asym = Symbol('nanlv')
let bsym = Symbol('nanlv')
console.log(asym==bsym) ; // 输出 false
Symbol 保证是唯一的。即使我们创建了许多具有相同描述的 Symbol,它们的值也是不同。描述只是一个标签,不影响任何东西。
查询全局symbol
使用 Symbol.keyFor()来查询全局符号注册表。通过接收参数为 symbol 类型,返回该 symbol 对应的字符串键,如果查询不到则返回 undefined
let s = Symbol.for('nanlv');
console.log(Symbol.keyFor(s)); // nanlv
console.log(Symbol.keyFor(s2)); // 报错 TypeError: s2 is no