ES6 新增的 Symbol 类型及其常见应用场景

阅读时长 3 分钟读完

ES6 引入了一种新的基本数据类型 Symbol,它是一种类似于字符串的数据类型,但具有唯一性。在使用时,我们可以给 Symbol 变量赋值一个描述,但这个描述只是一个可选参数,不会影响这个 Symbol 变量的唯一性。

Symbol 的创建

在创建 Symbol 时,我们可以使用 Symbol() 函数来创建一个全局唯一的 Symbol 变量。

上述代码创建了两个不同的 Symbol 变量,它们在内存中的地址是不同的,所以它们不相等。

我们也可以使用可选参数给 Symbol 变量添加一个描述,这个描述将作为 Symbol 变量的注释,方便我们在开发时识别不同的 Symbol 变量。

上述代码创建了两个描述相同但不相等的 Symbol 变量,它们的描述不会影响它们的唯一性。

Symbol 的应用场景

1. 属性名

Symbol 变量可以作为对象属性的名称,使用 Symbol 变量作为属性名可以避免属性名的冲突,因为它们是全局唯一的。

上述代码创建了一个名为 MY_KEY 的 Symbol 变量,并将它作为 myObj 对象的属性名。这样,我们就可以使用 Symbol 变量来作为对象属性的名称了。

2. 迭代器

Symbol 还可以用来创建迭代器,实现对象的可迭代性。

上述代码创建了一个包含三个元素的可迭代对象 myIterable,当我们使用扩展运算符将其转化为数组时,得到的结果为 [1, 2, 3]

3. 内置迭代器

ES6 中的一些内置迭代器使用了 Symbol 变量作为属性名,例如 MapSet 类型中的迭代器方法。我们可以使用这些迭代器方法来遍历 MapSet 中的元素。

上述代码创建了一个 Map 类型的对象 myMap,它包含了两个键值对。我们可以使用 for...of 循环来遍历 myMap 中的元素。

总结

Symbol 变量是 ES6 中的新数据类型,它具有唯一性、可作为属性名和迭代器等特性。在编写代码时,我们可以使用 Symbol 变量来避免属性名的冲突,同时也可以方便地遍历对象中的元素。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64e1e957f6b2d6eab3d33191

纠错
反馈

纠错反馈