探究 ES9 中新增 Symbol 的应用

什么是 Symbol?

Symbol 是 ES6 中新增的一种原始数据类型,表示独一无二的值。每个 Symbol 值都是唯一的,可以用作对象属性名,避免属性名冲突。

ES9 中新增的 Symbol 方法

ES9 中新增了一些 Symbol 方法,让 Symbol 的应用更加灵活。

Symbol.prototype.description

Symbol.prototype.description 可以获取 Symbol 的描述信息,返回一个字符串。

示例代码:

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

Symbol.asyncIterator

Symbol.asyncIterator 用于定义一个异步迭代器,返回一个异步迭代器对象。

示例代码:

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

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

Symbol.matchAll

Symbol.matchAll 用于定义一个全局的正则表达式匹配器,返回一个迭代器。

示例代码:

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

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

Symbol.replace

Symbol.replace 用于定义一个全局的字符串替换方法,返回一个函数。

示例代码:

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

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

Symbol.search

Symbol.search 用于定义一个全局的字符串搜索方法,返回一个函数。

示例代码:

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

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

Symbol.species

Symbol.species 用于定义一个构造函数,返回一个函数。

示例代码:

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

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

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

Symbol 的应用

避免属性名冲突

Symbol 可以用作对象属性名,避免属性名冲突。

示例代码:

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

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

实现私有属性和方法

Symbol 可以用于实现私有属性和方法,避免被外部访问。

示例代码:

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

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

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

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

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

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

总结

Symbol 是一种独一无二的值,可以用作对象属性名,避免属性名冲突。ES9 中新增了一些 Symbol 方法,让 Symbol 的应用更加灵活。Symbol 可以用于实现私有属性和方法,避免被外部访问。

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