JS Symbol 符号
学习Symbol · 难度:高级 · +15XP
JavaScript Symbol —— 独一无二的标识符
Symbol是ES6引入的原始类型。每个Symbol值都是独一无二的——即使描述相同,它们也不相等。主要用于对象属性名,防止属性名冲突。
基本用法
const sym1 = Symbol('id');
const sym2 = Symbol('id');
console.log(sym1 === sym2); // false!描述相同但值不同
const obj = {
[sym1]: '不会和其他属性冲突',
name: '小明'
};
console.log(obj[sym1]); // '不会和其他属性冲突'
// Object.keys()和for...in不会遍历Symbol属性
console.log(Object.keys(obj)); // ['name']
全局Symbol注册表
const globalSym1 = Symbol.for('app.id'); // 全局注册
const globalSym2 = Symbol.for('app.id');
console.log(globalSym1 === globalSym2); // true!同一个Symbol
console.log(Symbol.keyFor(globalSym1)); // 'app.id'
动手练习
- 基础练习:用Symbol给对象添加"私有"属性。
- 进阶应用:用Symbol.iterator让自定义对象支持for...of。
- 项目实战:研究React中Symbol的使用(如React.element类型检测)。