在 ES6 中使用 Symbol 类型

在 ES6 中,Symbol(符号)是一种新的原始数据类型,可以用于标识对象的属性键。可以将 Symbol 可以看作是唯一且不可变的值,即使两个 Symbol 的值相同,它们也是不相等的。

Symbol 的创建和使用

使用 Symbol() 函数可以创建一个新的 Symbol 类型的值。每个 Symbol 都是唯一的,不能被复制或者比较。我们可以将 Symbol 用作对象属性的键来确保该属性的唯一性。

----- ------- - ---------
----- ------- - -------------------
---------------------
--------------------- 

上述代码中,我们创建了两个不同的 Symbol 类型变量,其中 symbol2 是以字符串 'mySymbol' 为描述符创建的,会在输出中显示,而默认为“Symbol()”。

我们可以使用以下代码来对对象进行属性键的定义和赋值。

----- -------- - ---
----------------- - --------
----------------- - --------
-------------------------------
-------------------------------

上述代码中,我们定义了 myObject 对象,通过使用 Symbol 作为属性名,将 'Hello' 和 'World' 分别赋值给 symbol1symbol2 属性。

Symbol 属性的保护

Symbol 属性可以保护对象中的一些特定数据,例如敏感数据或者私有数据,以防止被不小心的修改或者访问。

下面是一个例子,其中创建了一个对象以通过 Symbol 属性来定义私有数据,同时提供了一些方法以更改这些数据:

----- ------------- - --- -- -
  ----- ------------ - ---------------
  ----- ----- - ----------------

  ----- ------------- -
    -------------- -
      ----------- - --
      ------------------ - -----
    -

    ----- -
      -- -------------------- -
        ------ ------------
      - ---- -
        ------ ----------
      -
    -

    ------ -
      -- -------------------- -
        ----------- - --
      - ---- -
        --------------------- ----------
      -
    -
  -

  ------ --------------
-----

上述代码中,我们返回了一个 IIFE(立即调用的函数表达式)并创建了一个 MyPrivateData 类。类中使用了两个 Symbol 属性来存储私有数据和初始化标记,从而保护数据不被不小心修改或者访问。

Symbol 的遍历和内置 Symbols

我们可以使用 Object.getOwnPropertySymbols() 方法访问对象中的 Symbol 属性。这个方法会返回一个给定对象自身的可枚举 Symbol 属性值的数组。

----- -------- - ---
----- ------- - --------------------
----- ------- - --------------------
----------------- - --------
----------------- - --------
----------------------------------------------------

上述代码中,我们为 myObject 对象创建了两个 Symbol 属性 symbol1symbol2。通过使用 Object.getOwnPropertySymbols(myObject) 方法,我们可以获取包含这些 Symbol 属性的数组。

此外,在 ES6 中,还有一些内置的 Symbol 属性可以使用,例如 Symbol.iterator,它可以用于创建一个对象的迭代器。 Symbol.toPrimitive 可以用于从对象中提取原始值。其他内置的 Symbol 属性还包括:Symbol.hasInstanceSymbol.matchSymbol.replace 等等。

结论

通过本文的学习,我们了解了 ES6 中 Symbol 类型的使用和基本功能。Symbol 属性的创建和使用以及 Symbol 的遍历和内置 Symbols。同时,我们通过一些简单的示例代码,可以更好地理解 Symbol 的概念和使用。

在实际代码开发中,我们可以使用 Symbol 来确保对象属性的唯一性以及保护对象中的私有数据等。 Symbol 是一种强有力的工具,可以为我们的前端开发带来更加安全和高效的代码实现。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/67356ad50bc820c5824e52c6