Symbol说明和用法
时间: 2024-04-09 16:33:04 浏览: 29
Symbol 是 ECMAScript 6 中引入的一种新的原始数据类型,用于表示独一无二的值。它可以作为对象属性的键,用于避免命名冲突。
Symbol 的特性和用法如下:
1. 创建 Symbol:可以使用全局的 Symbol 函数来创建一个新的 Symbol 值。
```javascript
const sym = Symbol();
```
2. Symbol 的描述符:可以向 Symbol 函数传递一个可选的字符串参数作为描述符,用于标识和描述这个 Symbol 值的用途。
```javascript
const sym = Symbol("description");
```
3. 独一无二性:每个通过 Symbol 函数创建的 Symbol 值都是独一无二的,即使描述符相同。
```javascript
const sym1 = Symbol("description");
const sym2 = Symbol("description");
console.log(sym1 === sym2); // false
```
4. 使用 Symbol 作为对象属性键:可以将 Symbol 作为对象属性的键,以避免命名冲突。
```javascript
const obj = {
[sym]: "value"
};
```
5. 访问对象中的 Symbol 属性:要访问对象中使用 Symbol 作为键的属性,需要使用方括号或 Object.getOwnPropertySymbols 方法。
```javascript
console.log(obj[sym]); // value
const symbols = Object.getOwnPropertySymbols(obj);
console.log(symbols[0]); // Symbol(description)
```
6. 内置的 Symbol 值:ECMAScript 6 提供了一些内置的 Symbol 值,用于表示语言内部的特性和行为,例如 Symbol.iterator、Symbol.toStringTag 等。
Symbol 的主要用途是创建唯一的键名,用于在对象中定义非常私有的属性或方法,以及在 JavaScript 中实现一些特殊的行为,例如迭代器和自定义类型的标识等。由于 Symbol 是独一无二的,它可以确保这些属性或方法不会被意外地访问或覆盖。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)