基本概念
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()
方法。