什么是 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