什么是 Symbol
Symbol 是一种新的基本数据类型,它能够作为对象的唯一属性名(即所谓的私有属性名),这样就避免了对象属性名之间的冲突。具体来说,Symbol 类型的变量是一个独一无二的值,而且不会与其他的任何值相等。
Symbol 的使用
Symbol 值通过 Symbol()
函数生成,如下所示:
const sym = Symbol(); console.log(typeof sym); // "symbol"
Symbol 变量通常用于对象属性的私有名称:
-- -------------------- ---- ------- ----- ----- - --- ----- ---- - --------------- ----------- - ----- ----- --- - -------------- ---------- - --- ------------------------- -- ---- ------------------------ -- --
在上面的代码中,name
和 age
都是 Symbol 类型的变量,用于作为 myObj
的属性名。这样就避免了其他属性名与 name
和 age
冲突的可能性。
Symbol 的应用
1. 使用 Symbol 创建常量
由于 Symbol 值不会重复,因此可以将其用作变量名称,以创建常量:
-- -------------------- ---- ------- ----- ---- - - ------- ----------------- -------- ------------------ ---------- -------------------- --------- ------------------- ------- ----------------- --------- ------------------- ------- ---------------- -- ------------------------- -- --------------
2. 使用 Symbol 创建类的私有方法
由于 Symbol 变量不会重复,因此可以用它们创建类的私有方法,以避免方法名的冲突。
-- -------------------- ---- ------- ----- ---- - -------------- ----- ------- - ------------ - -------------------------------- - ---------- - ----------------- --------- - - ----- ----- - --- ---------- ----------------- -- ------ -------
在上面的代码中,_log
是一个 Symbol 类型的变量,用于创建 MyClass
的私有方法。这个方法不能被外部访问,只能通过 sayHello()
方法调用。
总结
Symbol 是一个新的基本数据类型,它能够作为对象的唯一属性名,避免了对象属性名之间的冲突。Symbol 变量通常用于对象属性的私有名称、创建常量和类的私有方法。在合适的场景下使用 Symbol 可以提高代码的健壮性和可维护性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/653b22187d4982a6eb574b8c