不懂就问-JavaScript 中 Symbol 的使用场景

404 阅读1分钟

在 JavaScript 中,Symbol 是一种原始数据类型,用于创建唯一的标识符。由于每个 Symbol 值都是唯一的,因此它们通常用作对象属性的键(key),以确保在不同的对象中不会发生键名冲突。

以下是几个使用场景的例子:

1. 创建唯一的对象属性:

const symbolKey = Symbol('myKey');
const obj = {};

obj[symbolKey] = 'value';

console.log(obj[symbolKey]); // 'value'

2. 创建私有属性:

const _private = Symbol('private');

class MyClass {
  constructor() {
    this[_private] = 'private value';
  }

  getPrivateValue() {
    return this[_private];
  }
}

const instance = new MyClass();

console.log(instance.getPrivateValue()); // 'private value'
console.log(instance._private); // undefined

3. 使用内置的 Symbol 常量:

JavaScript 中有一些内置的 Symbol 常量,例如 Symbol.iterator、Symbol.toPrimitive 等。它们可以用来修改对象的默认行为。例如:

const myObj = {
  [Symbol.toPrimitive](hint) {
    if (hint === 'number') {
      return 42;
    }
    if (hint === 'string') {
      return 'forty-two';
    }
    return 'default';
  }
};

console.log(myObj + 1); // 43
console.log(String(myObj)); // 'forty-two'
console.log(Number(myObj)); // 42

以上是一些使用 Symbol 的场景和例子。