ES6 中的 Symbol 类型及其常用方法

阅读时长 5 分钟读完

ES6 中引入了一个新的原始数据类型 Symbol,它是一种基本数据类型,类似于Number、String、Boolean等类型。每个Symbol类型的值都是唯一的,这是它的最大特点。

Symbol 的基本用法

在 ES6 中,我们可以通过Symbol函数来创建一个Symbol类型的值。

Symbol函数可以接受一个可选的字符串参数,用来描述这个Symbol类型的值。

我们可以给Symbol类型的值取一个名称,但不影响其唯一性。

Symbol 的特点

Symbol类型的值有如下的特点:

  • 一个Symbol类型的值永远不会等于另一个Symbol类型的值;
  • Symbol类型的值可以作为对象的属性名使用,但不能使用点运算符;
  • Symbol类型的值无法显示转换为字符串;
  • Symbol类型的值也无法通过JSON.stringify()序列化;

Symbol 对象方法

ES6 中,Symbol构造函数有一些方法能返回Symbol值的相关信息。

Symbol.for()

Symbol.for()是一个注册表,它接受一个字符串作为参数,并返回一个Symbol类型的值。当你使用相同的字符串调用时,它会返回相同的Symbol值。

Symbol.keyFor()

Symbol.keyFor()方法和Symbol.for()方法相反,它接受一个Symbol类型的值,并返回注册表中与该值关联的字符串。

Symbol 作为对象属性名

Symbol类型的值可以用作对象属性名,这种用法是其最重要的应用场景之一。

由于Symbol类型的值的唯一性,它可以很好地解决属性名重复的问题。

Symbol 暴露的类型

ES6中有一些内置的Symbol类型,可以用来访问某些实例的内部属性,如:Symbol.iterator。

Symbol.iterator

Symbol.iterator用来指示对象是可迭代的,可以使用for...of循环结构进行遍历。

Symbol.match

Symbol.match用于对象指挥当前对象是否有匹配的方法,在使用正则表达式时非常有用。

-- -------------------- ---- -------
--- --- - ------ -------
--------------------------------  -- --------- ------ -- ------ ------ ------- ------- ----------

--- --- - -
  --------------- --------------- -
    ------ ------ --------------------- -- --
  -
--

--------------------------------  -- ----

Symbol.toPrimitive

Symbol.toPrimitive方法用于对象指挥如何将其转换为原始值。

-- -------------------- ---- -------
--- --- - -
  --------------------- -------------- -
    ------ ------ -
      ---- ---------
        ------ --------
      ---- ---------
        ------ ----
      ---- ----------
        ------ ----------
    -
  -
--

-------------------------  -- -------
-------------------------  -- ---
--------------- - ----   -- ---------

总结

本文主要介绍了ES6 中的Symbol类型及其常用方法,以及Symbol类型的使用场景。对于初学者来说,可以更好的理解JavaScript中的内存模型及其应用。同时,Symbol类型的应用场景也很广泛,能够为我们带来很多便利。

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

纠错
反馈