Symbol 类型详解,让你秒懂这把利器!
2024-01-30 17:57:46
概览
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 的标识符。