在 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