ES8 中 WeakSet、WeakMap 和 Set 的使用方法

阅读时长 5 分钟读完

在 JavaScript 的 ES8 标准中,我们新增了一些特殊的集合类型,它们包括 WeakSet、WeakMap 和 Set,它们提供了一种更好的方法来处理一些特殊类型的数据。本文将详细介绍它们的使用方法,希望对你的学习和实践有所帮助。

Set

Set 对象允许你存储任何类型的唯一值,无论是原始值或者是引用值。Set 对象中的每个值都必须是唯一的。Set 成员的值是按插入顺序存储的,因此可以按照插入顺序进行迭代。它也提供了一些有用的方法,如 add()delete()has()clear()

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

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

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

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

-----------

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

WeakSet

WeakSet 对象同样是存储唯一值的集合,但是它只能存储对象引用。类似于 Set,WeakSet 中的对象引用是弱引用,即如果没有其他的变量或者属性持有这个对象,那么该对象会被垃圾回收。因此,WeakSet 对象不能遍历、没有 size 属性也没有清空方法。

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

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

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

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

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

在实际开发中,WeakSet 对象主要用于存储对象的私有属性,因为这些属性不应该公开访问。如果需要访问它们,必须通过包装对象来进行访问。

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

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

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

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

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

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

Map

Map 对象也是一种集合类型,可以存储键值对,其中键和值可以是任何类型的值,包括原始值和对象引用等。Map 成员的键值对是按插入顺序存储的,因此可以按照插入顺序进行迭代。Map 对象中的每个键只能对应一个值,如果多次插入同一个键,则会覆盖掉已有的值。Map 对象也提供了一些有用的方法,如 set()get()has()delete()

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

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

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

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

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

-----------

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

WeakMap

WeakMap 对象同样是存储键值对的集合,但是它只能使用对象作为键名,且键名必须是对象引用。类似于 WeakSet,WeakMap 中的对象引用也是弱引用,即如果没有其他的变量或者属性持有这个对象,那么该对象会被垃圾回收。因此,WeakMap 对象不能遍历、没有 size 属性也没有清空方法。

WeakMap 对象主要用于存储对象的私有属性,因为这些属性不应该公开访问。如果需要访问它们,必须通过包装对象来进行访问。

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

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

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

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

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

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

总结

Set、WeakSet、Map 和 WeakMap 是 JavaScript ES8 中非常有用的集合类型,它们提供了一种更好的方法来处理一些特殊类型的数据。在实际开发中,我们可以灵活使用它们,为自己带来更好的开发体验和便捷性。

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

纠错
反馈