📜  JavaScript Symbol() 构造函数(1)

📅  最后修改于: 2023-12-03 14:42:27.357000             🧑  作者: Mango

JavaScript Symbol() 构造函数

在 ECMAScript 6 中,Symbol 是一种新的原始数据类型,它的主要作用是创建一个唯一的标识符,可以被用作对象属性的键。

使用方法

可以通过 Symbol() 构造函数来创建一个唯一的符号。

const mySymbol = Symbol();

在创建 Symbol 时可以传递一个描述字符串作为参数:

const mySymbol = Symbol('My Symbol Description');

这个描述字符串主要是用于调试和错误消息。

唯一性

由于每个 Symbol 都是唯一的,因此不能通过 new 关键字创建它的实例。每个 Symbol 都有一个唯一的内部值,可以通过 toString() 方法获取它的内部值。

const mySymbol = Symbol();
console.log(mySymbol.toString());       // Symbol()
console.log(typeof mySymbol.toString());// string
作为对象属性键

一个对象属性的键可以是任何值,包括字符串、数字和 Symbol。使用 Symbol 作为键可以避免属性的命名冲突。

const mySymbol = Symbol();
const myObject = {
  [mySymbol]: 'My Value'
};

console.log(myObject[mySymbol]); // 'My Value'
预定义内置 Symbol

在 Symbol 构造函数中还有一些预定义的内置 Symbol:

  1. Symbol.iterator:它定义了对象的默认迭代器,可以被 for-of 循环使用。
  2. Symbol.toStringTag:可以在对象上定义一个自定义的 toString() 方法。
const myObject = {
  [Symbol.toStringTag]: 'My ObjectType'
};

console.log(myObject.toString()); // [object My ObjectType]
总结

JavaScript Symbol() 构造函数可以创建唯一的标识符,它可以被用作对象属性的键。由于每个 Symbol 都是唯一的,因此它可以避免属性命名冲突。除了自定义 Symbol,还有一些内置的预定义 Symbol 可以用于特定的场景。