mirror of
https://github.com/ruanyf/es6tutorial.git
synced 2025-05-24 18:32:22 +00:00
docs(symbol): add description
This commit is contained in:
parent
dca90708ac
commit
dec326eba2
@ -99,6 +99,33 @@ Number(sym) // TypeError
|
|||||||
sym + 2 // TypeError
|
sym + 2 // TypeError
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Symbol.prototype.description
|
||||||
|
|
||||||
|
创建 Symbol 的时候,可以添加一个描述。
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
const sym = Symbol('foo');
|
||||||
|
```
|
||||||
|
|
||||||
|
上面代码中,`sym`的描述就是字符串`foo`。
|
||||||
|
|
||||||
|
但是,读取这个描述需要将 Symbol 显式转为字符串,即下面的写法。
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
const sym = Symbol('foo');
|
||||||
|
|
||||||
|
String(sym) // "Symbol(foo)"
|
||||||
|
sym.toString // "Symbol(foo)"
|
||||||
|
```
|
||||||
|
|
||||||
|
上面的用法不是很方便。[ES2019](https://github.com/tc39/proposal-Symbol-description) 提供了一个实例属性`description`,直接返回 Symbol 的描述。
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
const sym = Symbol('foo');
|
||||||
|
|
||||||
|
sym.description // "foo"
|
||||||
|
```
|
||||||
|
|
||||||
## 作为属性名的 Symbol
|
## 作为属性名的 Symbol
|
||||||
|
|
||||||
由于每一个 Symbol 值都是不相等的,这意味着 Symbol 值可以作为标识符,用于对象的属性名,就能保证不会出现同名的属性。这对于一个对象由多个模块构成的情况非常有用,能防止某一个键被不小心改写或覆盖。
|
由于每一个 Symbol 值都是不相等的,这意味着 Symbol 值可以作为标识符,用于对象的属性名,就能保证不会出现同名的属性。这对于一个对象由多个模块构成的情况非常有用,能防止某一个键被不小心改写或覆盖。
|
||||||
|
Loading…
x
Reference in New Issue
Block a user