`WeakMap` 和 `WeakSet`
时间: 2023-10-17 18:29:42 浏览: 37
`WeakMap` 和 `WeakSet` 是 JavaScript 中的两种集合数据结构。它们类似于 `Map` 和 `Set`,但与传统的 `Map` 和 `Set` 不同,它们对于存储的键是弱引用关系。这意味着当对象作为键存在于 `WeakMap` 或 `WeakSet` 中时,如果没有其他地方引用该对象,垃圾回收机制会自动将其从集合中删除,从而避免内存泄漏。
`WeakMap` 是一种键值对的集合,其中键是对象,值可以是任意类型的值。与 `Map` 不同,`WeakMap` 中的键只能是对象类型的数据。`WeakMap` 提供了 `set`、`get`、`has` 和 `delete` 等方法来操作集合中的成员。由于键是弱引用关系,因此无法迭代 `WeakMap` 中的键或值。
`WeakSet` 是一种值的集合,其中值也只能是对象类型的数据。`WeakSet` 提供了 `add`、`has` 和 `delete` 等方法来操作集合中的成员。同样,由于值是弱引用关系,无法迭代 `WeakSet` 中的值。
总结来说,`WeakMap` 和 `WeakSet` 提供了一种存储弱引用关系对象的方式,可以避免内存泄漏问题。它们在某些特定场景下非常有用,比如存储临时数据或缓存数据,但需要注意的是,由于弱引用关系,它们在使用时需要谨慎处理对象的生命周期。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [weakMap和weakSet](https://blog.csdn.net/weixin_49343253/article/details/118896166)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [which-collection:这个 JavaScript 值是哪种集合(Map、Set、WeakMap、WeakSet)? 跨领域工作,没有`...](https://download.csdn.net/download/weixin_42099087/20452357)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]