Symbol
是 JavaScript ES6 引入的一种新数据类型,表示独一无二的值。它是 JavaScript 的基本类型之一(除了 String
、Number
、Boolean
、Null
、Undefined
和 Object
之外)。Symbol
值是唯一的,即使两个 Symbol
具有相同的描述,它们的值也是不同的。Symbol
的主要用处是创建对象的唯一属性名,以避免属性名冲突,特别是在大型项目或库中非常有用。
1. Symbol 的基本使用
const sym1 = Symbol('description');
const sym2 = Symbol('description');
console.log(sym1 === sym2); // false
即使 sym1
和 sym2
都有相同的描述('description'
),它们依然是不同的值。
2. Symbol 作为对象的属性键
在 JavaScript 对象中,通常属性名是字符串。但有时可能会有两个不同的模块使用相同的属性名,导致冲突。Symbol
可以用作对象的唯一属性键,避免这种冲突。
const sym = Symbol('myKey');
const obj = {
[sym]: 'value associated with symbol'
};
console.log(obj[sym]); // "value associated with symbol"
console.log(obj['myKey']); // undefined
- 这里的
sym
是唯一的,即使有其他对象也用类似的描述'myKey'
,它们也不会冲突。
3. 隐藏属性
因为 Symbol
属性不会出现在常规的对象属性遍历操作中(如 for...