ES6/ES2015 引入了一种新的基本数据类型 Symbol
。Symbol
是表示唯一标识符的数据类型,用于标识对象的属性名,避免命名冲突,也可以用作私有属性。
创建 Symbol
创建一个 Symbol
可以使用 Symbol()
方法。
示例代码:
----- -------- - ---------
可以通过传递可选的字符串来标记 Symbol
。这个字符串仅用于调试或调用 .toString()
方法。
示例代码:
----- -------- - ---------- --------- ---------------------- -- --------- ------- --------------------------------- -- ---------- --------
使用 Symbol 作为对象属性
通过将 Symbol
作为对象的属性名,可以避免属性名的冲突。当使用 Object.keys()
方法列出对象的属性时,Symbol
属性不会被列出,也不会被 for-in
循环遍历。
示例代码:
----- -------- - --------- ----- --- - --- ------------- - ------ --------------------------- -- ----- ------------------------------ -- -- --------------------------------------------- -- --
使用全局 Symbol 注册表
通过 Symbol.for()
方法,可以在全局 Symbol
注册表中注册 Symbol
,然后可以在整个应用程序中重用这些 Symbol
。
示例代码:
----- -------- - -------------- --------- ----- ---- - - ----------- ----- -- ----- ---- - - ----------- ----- -- ---------------------------- -- ----- ---------------------------- -- -----
内置 Symbol
ES6/ES2015 中有许多内置的 Symbol
,以及一些在类和对象中使用的特殊 Symbol
。以下是一些常见的内置 Symbol
:
Symbol.iterator
:一个方法,返回对象的默认迭代器,用于支持for-of
循环语句。Symbol.species
:一个方法,返回创建实例对象的函数,用于继承自内置对象的子类。Symbol.match
、Symbol.replace
、Symbol.search
、Symbol.split
:用于正则表达式方法。
示例代码:
----- --- - --- -- --- ----- -------- - ----------------------- ----------------------------- -- ------- -- ----- ------ ----------------------------- -- ------- -- ----- ------ ----------------------------- -- ------- -- ----- ------ ----------------------------- -- ------- ---------- ----- -----
总结
通过在对象中使用 Symbol
属性名,可以避免属性名冲突,并且可用于实现私有属性。Symbol.for()
方法可以用于创建全局 Symbol
,以便整个应用程序中都重用这些 Symbol
。
建议在使用 Symbol
时,应将其作为常量声明,并使用描述性名称进行命名,以提高代码的可读性和维护性。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/654a46b87d4982a6eb46b67f