返回

Symbol 类型详解,让你秒懂这把利器!

后端

概览

Symbol 类型是一种新的原始数据类型,它可以用来创建唯一的标识符。Symbol 值是不可变的,并且不能被重新赋值。Symbol 类型非常适合用作对象属性的键,因为它们可以确保属性的唯一性。

创建 Symbol

Symbol 类型的值可以使用 Symbol() 函数创建。Symbol() 函数可以接受一个可选的参数,该参数将作为 Symbol 值的。例如,以下代码创建了一个名为 "mySymbol" 的 Symbol 值:

const mySymbol = Symbol();

也可以使用 Symbol() 函数来创建具有相同的 Symbol 值。例如,以下代码创建了两个具有相同描述的 Symbol 值:

const mySymbol1 = Symbol("mySymbol");
const mySymbol2 = Symbol("mySymbol");

Symbol 的唯一性

Symbol 值是唯一的,这意味着没有两个 Symbol 值是相等的。即使两个 Symbol 值具有相同的描述,它们仍然是不同的值。例如,以下代码输出 false:

console.log(mySymbol1 === mySymbol2);

Symbol 作为对象属性的键

Symbol 类型非常适合用作对象属性的键,因为它们可以确保属性的唯一性。例如,以下代码创建了一个名为 "myObject" 的对象,该对象具有两个属性,其中一个属性的键是一个 Symbol 值:

const myObject = {
  name: "John Doe",
  [mySymbol]: "This is a private property"
};

Symbol 作为对象属性的键时,可以防止属性被枚举。例如,以下代码输出 "name",但不会输出带有 Symbol 键的属性:

for (const property in myObject) {
  console.log(property);
}

Symbol 的其他用途

Symbol 类型还可以用于其他用途,例如:

  • 作为 Map 和 Set 的键
  • 作为 Generator 函数的标识符
  • 作为 Promise 的标识符

比较运算

Symbol 值不能与其他类型的值进行比较。例如,以下代码输出 NaN:

console.log(mySymbol1 == "mySymbol");

总结

Symbol 类型是一种新的原始数据类型,它可以用来创建唯一的标识符。Symbol 值是不可变的,并且不能被重新赋值。Symbol 类型非常适合用作对象属性的键,因为它们可以确保属性的唯一性。Symbol 类型还可以用于其他用途,例如作为 Map 和 Set 的键、作为 Generator 函数的标识符以及作为 Promise 的标识符。