ES6 中的 Symbol 详解及应用

阅读时长 4 分钟读完

什么是 Symbol?

Symbol 是 ES6 中新增的一种基本数据类型,表示独一无二的值。它是一种类似于字符串的数据类型,但是它的值是唯一且不可变的,可以用作对象属性的键值。

Symbol 的创建

Symbol 可以通过全局的 Symbol 函数来创建,每个 Symbol 值都是唯一的,即使它们使用相同的描述符。

Symbol 的应用

1. 对象属性的键值

Symbol 可以作为对象属性的键值,这样可以避免属性名冲突的问题。

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

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

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

2. 避免属性被意外修改

Symbol 的另一个用途是定义对象的私有属性,这样可以避免属性被意外修改。

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

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

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

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

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

3. 定义类的私有属性

Symbol 还可以用来定义类的私有属性,这样可以避免属性被子类或实例修改。

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

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

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

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

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

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

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

4. 遍历对象的属性

Symbol 也可以用来定义对象的可遍历属性。

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

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

总结

Symbol 是 ES6 中新增的一种基本数据类型,表示独一无二的值。它可以作为对象属性的键值,避免属性名冲突的问题;也可以用来定义对象的私有属性,避免属性被意外修改;还可以用来定义类的私有属性,避免属性被子类或实例修改;最后,Symbol 也可以用来定义对象的可遍历属性。

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

纠错
反馈