Symbol 是 ES6 引入的一种原始数据类型,用于创建唯一且不可变的标识符,特别适合需要避免命名冲突的场景。以下是核心知识点:
📌 基本用法
创建 Symbol
使用Symbol()
函数生成,可传递描述参数(仅用于调试)const key = Symbol("description"); console.log(key); // Symbol(description)
Symbol 的特性
- 全局唯一性:
Symbol("foo") === Symbol("foo")
→false
- 不可枚举性:不会出现在
Object.keys()
或for...in
中 - 不能作为对象属性名(需用
[Symbol]
语法) - 可通过
Symbol.for()
全局注册共享 Symbol
- 全局唯一性:
📚 示例代码
const sym1 = Symbol();
const sym2 = Symbol("abc");
const sym3 = Symbol.for("abc");
// 对象属性使用
const obj = {
[sym1]: "值1",
[sym2]: "值2"
};
// 全局 Symbol 查找
const sym4 = Symbol.for("abc");
console.log(sym4 === sym3); // true
// Symbol 转换为字符串
console.log(sym2.toString()); // Symbol(abc)