ES7 对于类型代表符号是什么?

阅读时长 4 分钟读完

ES7 对于类型代表符号是什么?

随着 JavaScript 这门语言的发展,ES7(ECMAScript 2016)引入了一些新的特性,其中之一就是类型代表符号(Symbol)。

Symbol 是 JavaScript 中的一种基本数据类型,它可以用来创建一个独一无二的值,可以用作对象属性的键名,以防止属性名的冲突。Symbol 值是通过 Symbol 函数创建的,例如:

上面的代码中,我们通过 Symbol 函数分别创建了两个 Symbol 值,symbol1 和 symbol2,其中 symbol2 的描述是可选的,用来描述该 Symbol 值的用途。

类型代表符号的一个重要应用是在对象中定义私有属性。在 JavaScript 中,对象的属性可以通过访问器(getter 和 setter)来进行读写,但是这样会暴露属性的实现细节,因此可以使用类型代表符号来隐藏属性。

例如,我们可以定义一个名为 Person 的类来表示一个人,其中包含一个私有属性 _name:

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

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

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

上面的代码中,我们使用类型代表符号来定义了私有属性 _name,通过访问器来读写该属性的值,外部无法直接访问 _name 属性。

除了用作对象属性的键名之外,类型代表符号还可以用来创建一些内置的 Symbol 值,例如:

  • Symbol.iterator:用来定义一个对象的默认迭代器方法;
  • Symbol.asyncIterator:用来定义一个对象的异步迭代器方法;
  • Symbol.toStringTag:用来定义一个对象的默认的 toString() 方法的返回值。

示例代码:

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

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

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

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

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

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

总结:

类型代表符号是 ES7 中引入的一种基本数据类型,可以用来创建一个独一无二的值,可以用作对象属性的键名,以防止属性名的冲突。类型代表符号的一个重要应用是在对象中定义私有属性,可以使用访问器来读写该属性的值,外部无法直接访问私有属性。除此之外,类型代表符号还可以用来创建一些内置的 Symbol 值,例如 Symbol.iterator、Symbol.asyncIterator 和 Symbol.toStringTag 等。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/656be876d2f5e1655d442910

纠错
反馈