ES6 中新增的 Symbol 类型及其用法

在 ES6 中,新增了一种基本数据类型 Symbol。Symbol 作为一种全新的数据类型,与其他类型不同,它的值是唯一的,可以用作对象属性的键名。

Symbol 的创建

Symbol 可以通过 Symbol() 函数来创建,创建时可以传入一个可选的字符串作为 Symbol 的描述。例如:

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

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

Symbol 的应用

1. 对象属性键名

Symbol 可以作为对象属性的键名,且不会与其他属性的键名冲突。例如:

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

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

2. 避免属性名冲突

由于 Symbol 的值是唯一的,可以用于避免属性名冲突的问题。例如:

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

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

3. 定义类的私有属性

由于 Symbol 的值是唯一的,可以用于定义类的私有属性。例如:

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

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

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

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

4. Symbol 值的属性描述

Object.getOwnPropertySymbols 方法可以获取对象的所有 Symbol 属性键名。例如:

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

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

5. Symbol.for 和 Symbol.keyFor

Symbol.for 方法可以根据传入的字符串参数创建或获取一个全局 Symbol。例如:

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

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

Symbol.keyFor 方法可以获取一个全局 Symbol 的键名。例如:

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

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

总结

Symbol 是一种全新的数据类型,它的值是唯一的,可以用作对象属性的键名。Symbol 的应用包括:对象属性键名、避免属性名冲突、定义类的私有属性、Symbol 值的属性描述等。掌握 Symbol 的用法可以提高代码的可读性和可维护性。

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