Skip to content

Commit dec326e

Browse files
committed
docs(symbol): add description
1 parent dca9070 commit dec326e

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

docs/symbol.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,33 @@ Number(sym) // TypeError
9999
sym + 2 // TypeError
100100
```
101101

102+
## Symbol.prototype.description
103+
104+
创建 Symbol 的时候,可以添加一个描述。
105+
106+
```javascript
107+
const sym = Symbol('foo');
108+
```
109+
110+
上面代码中,`sym`的描述就是字符串`foo`
111+
112+
但是,读取这个描述需要将 Symbol 显式转为字符串,即下面的写法。
113+
114+
```javascript
115+
const sym = Symbol('foo');
116+
117+
String(sym) // "Symbol(foo)"
118+
sym.toString // "Symbol(foo)"
119+
```
120+
121+
上面的用法不是很方便。[ES2019](https://github.com/tc39/proposal-Symbol-description) 提供了一个实例属性`description`,直接返回 Symbol 的描述。
122+
123+
```javascript
124+
const sym = Symbol('foo');
125+
126+
sym.description // "foo"
127+
```
128+
102129
## 作为属性名的 Symbol
103130

104131
由于每一个 Symbol 值都是不相等的,这意味着 Symbol 值可以作为标识符,用于对象的属性名,就能保证不会出现同名的属性。这对于一个对象由多个模块构成的情况非常有用,能防止某一个键被不小心改写或覆盖。

0 commit comments

Comments
 (0)