梗概:
一种基本类型的变量, 用来表示独一无二的id值
作用
- 避免冲突
使用场景
- 对象属性的唯一性: Symbol 可以用作对象的属性键,确保属性名是独一无二的,避免不同模块之间的命名冲突。
- 实现私有属性: 尽管 JavaScript 中没有真正意义上的私有属性,但通过使用 Symbol,可以模拟出具有一定程度私密性的对象属性,因为普通方法无法直接访问 Symbol 属性。
- 扩展内置对象: 使用 Symbol 作为键,可以安全地向内置对象添加新的方法或属性,而不会与可能存在的其他扩展发生冲突。
- 事件系统中的标识符: 在事件系统中,使用 Symbol 作为事件类型标识符,可以避免事件名与其他库或应用程序中的事件冲突,从而提高代码的可维护性和灵活性。
语法:
1. 创建局部Symbol
let id = symbol('描述信息')
2. 注册或获取全局Symbol
let id = Symbol.for('描述信息')
- 如果还未注册, 把创建的symbol注册到全局作用域下, 并对应一个
'描述信息'
- 如果已经注册, 在全局symbol中, 根据
描述信息
, 找到对应的Symbol
3. 把symbol类型的变量作为属性名
const PROP_NAME = Symbol()
let obj = {
[PROP_NAME]: "一斤代码"
}
实例:
Symbol.for("bar") === Symbol.for("bar"); // true,证明了上面说的
Symbol("bar") === Symbol("bar"); // false,Symbol() 函数每次都会返回新的一个 symbol