在 ES6 中,引入了一个新的数据类型 Symbol
,它是一种唯一且不可变的数据类型。
什么是 Symbol?
Symbol 是一种新的数据类型,表示独一无二的值。每个 Symbol 值都是唯一的,它们之间不会相等。
我们可以使用 Symbol()
函数来创建一个 Symbol 类型的值,如下所示:
const mySymbol = Symbol(); console.log(typeof mySymbol); // "symbol"
Symbol 的常见应用场景
常量定义
Symbol 可以用来作为常量的定义,因为它的值是唯一的。
-- -------------------- ---- ------- ----- ------ - --------- ----- ------ - --------- -------- ------------- - ------ ------ - ---- ------- ----------------- ---- ------ ---- ------- ----------------- ---- ------ -------- -------------------- - - ---------------- -- ------- - ---------------- -- ------- - ------------------ -- -------展开代码
属性访问控制
Symbol 也可以用来控制对象属性的访问权限。
-- -------------------- ---- ------- ----- ------ - - ----- ------ ---- --- --------------------- -------- -- ------------------------- -- ------ ------------------------ -- ----- ----------------------------- -- ------------展开代码
上面的例子中,我们使用了 Symbol 来定义一个名为 "password"
的属性,这个属性不会被遍历到,也无法直接访问。
迭代器
Symbol 也可以用来定义自定义迭代器。
-- -------------------- ---- ------- ----- ---------- - - ------------------ --------- -- - ----- -- ----- -- ----- -- - -- --- ------ ----- -- ----------- - ------------------- - -- --- -- - -- - -- -展开代码
上面的例子中,我们使用了 Symbol 来定义一个迭代器,然后通过 for...of
循环来遍历迭代器。
单例模式
Symbol 也可以用来实现单例模式。
-- -------------------- ---- ------- ----- --------- - --- -- - --- -------- - ----- -------- ---------------- - ------ - ----- ----- -- - ------ - ------------ -- -- - -- --------- --- ----- - -------- - --------- -------------- - ----------------- - ------ --------------- - -- ----- ----- ---- - ------------------------ ----- ---- - ------------------------ ---------------- --- ------ -- -------展开代码
上面的例子中,我们使用了 Symbol 来定义一个唯一的值,然后将其作为单例对象的实例,这样就保证了单例对象的唯一性。
总结
Symbol 是一个非常有用的数据类型,它可以用来定义常量、控制对象属性的访问权限、定义自定义迭代器、实现单例模式等等。我们应该尽可能地使用 Symbol 来解决问题,从而提高代码的可维护性和易读性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64e35d7ef6b2d6eab3ed1de6