在 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