基本概念
Symbol 的用法其实很简单,就是创建一个独一无二的值。
举个例子:
1 | Symbol() == Symbol() // false |
需要注意的是,不能使用 new 创建 Symbol ,因为 Symbol 是一个基本类型。
通常在使用 Symbol 的时候,会在其中加入标识符,例如:
1 | Symbol('foo') // Symbol(foo) |
Symbol 有 toString() 方法
主要使用场景
作为对象的属性名
1 | let o = {} |
需要注意的是,使用 Symbol 作为属性名时,要用 [] 的方式访问,因为点符号后面跟的只能时字符串。
定义常量
保证这些常量不相等
1 | let log = {} |
保证 Switch 按照设计使用
1 | const COLOR_RED = Symbol(); |
其他
Symbol 还有一些其他方法,请参阅读MDN Web Docs
不过需要特别注意的是,Symbol 定义的属性名,在使用 for...in 、for...of 等需要有迭代器的方法时不会出现,要获得一个对象所有的Symbol 属性名可以使用 Object.getOwnPropertySymbols() 方法。