Symbol 是 JavaScript 中的一种原始数据类型,用于创建唯一的标识符。以下是关于 Symbol 的几个要点:

  • 唯一性:每个 Symbol 值都是唯一的,即使它们具有相同的描述字符串。
  • 描述:可以通过传递一个可选的描述字符串来创建 Symbol,这个描述字符串主要用于调试,不会影响 Symbol 的唯一性。
  • 属性键Symbol 可以用作对象属性的键,这有助于避免属性名称冲突。
  • 全局注册表:可以通过 Symbol.forSymbol.keyFor 方法在全局符号注册表中创建和访问 Symbol

创建 Symbol

const sym1 = Symbol();
const sym2 = Symbol('description');

作为对象属性键

const mySymbol = Symbol('mySymbol');
const obj = {
  [mySymbol]: 'value'
};

console.log(obj[mySymbol]); // 输出: value

全局符号注册表

const sym1 = Symbol.for('key');
const sym2 = Symbol.for('key');

console.log(sym1 === sym2); // 输出: true

使用场景

  • 避免属性名称冲突:在大型项目中,多个模块可能会使用相同的属性名称,使用 Symbol 可以确保这些属性名称不会冲突。
  • 私有属性:虽然 Symbol 不是完全私有的,但它们可以作为一种约定,表示某个属性不应该被外部代码直接访问。