什么是 JavaScript 中的 WeakMap

简介: 什么是 JavaScript 中的 WeakMap

在 JavaScript 中,WeakMap 是一种特殊的 Map 数据结构,它允许将对象作为键,而且键值对是弱引用的关系。

与 Map 不同的是,WeakMap 的键只能是对象,不能是其他类型的值。同时,当键对象没有任何引用时,它们会被垃圾回收机制自动清除,这意味着 WeakMap 并不会导致内存泄漏。

弱引用的特性使得 WeakMap 在某些情况下非常有用,比如在需要将一些额外的数据与一个对象关联起来但又不希望影响到垃圾回收的场景下。常见的应用场景包括缓存、存储私有数据等。

WeakMap 的主要方法和属性与 Map 一致,包括 set、get、has、delete 等方法,但没有 size 属性。

以下是一个使用 WeakMap 的示例:

const wm = new WeakMap();
let obj1 = {name: 'John'};
let obj2 = {name: 'Jane'};
wm.set(obj1, 10);
wm.set(obj2, 20);
console.log(wm.get(obj1)); // 输出 10
console.log(wm.get(obj2)); // 输出 20
obj1 = null;
console.log(wm.get(obj1)); // 输出 undefined,obj1 已被垃圾回收

需要注意的是,由于 WeakMap 的键只能是对象,因此不能使用原始类型的值作为键,比如字符串、数字等。如果需要使用字符串或数字作为键,应该使用普通的 Map 数据结构。

相关文章
|
5月前
|
存储 JavaScript 前端开发
【JavaScript】Set、Map、WeakSet、WeakMap
Set、Map、WeakSet和WeakMap是ES6引入的新的数据结构,它们在处理数据时具有不同的特性和用途。本文将详细介绍它们的用法、特性、区别、优缺点以及使用场景和注意事项,并给出相应的代码示例
77 0
|
5月前
|
存储 JavaScript 前端开发
理解JavaScript中的WeakSet和WeakMap
理解JavaScript中的WeakSet和WeakMap
|
5月前
|
存储 缓存 JavaScript
javascript中的WeakMap和WeakSet
javascript中的WeakMap和WeakSet
|
12月前
|
JavaScript 前端开发 Java
带你读《现代Javascript高级教程》十二、深入理解JavaScript中的WeakMap和WeakSet(1)
带你读《现代Javascript高级教程》十二、深入理解JavaScript中的WeakMap和WeakSet(1)
|
12月前
|
存储 JavaScript 前端开发
带你读《现代Javascript高级教程》十二、深入理解JavaScript中的WeakMap和WeakSet(2)
带你读《现代Javascript高级教程》十二、深入理解JavaScript中的WeakMap和WeakSet(2)
|
12月前
|
JavaScript 前端开发 Java
带你读《现代Javascript高级教程》——深入理解JavaScript中的WeakMap和WeakSet(1)
带你读《现代Javascript高级教程》——深入理解JavaScript中的WeakMap和WeakSet
|
前端开发 JavaScript
html标签的tabindex属性?css变量和js更改变量?ES6新增特性Map/WeakMap和Set/WeakSet
tabindex 属性规定元素的 tab 键控制次序(当 tab 键用于导航时)。
|
JavaScript 前端开发
JS WeakMap 什么时候用?
JS WeakMap 什么时候用?
|
存储 JavaScript Java
聊一聊JS中WeakMap与WeakSet的渣男特性
有一天,恶霸在实验室里卷代码,突然有一个学妹抱着电脑来找我,问我WeakMap和WeakSet与Set和Map的主要区别是什么,这我就提起兴致了,趁这个机会给学妹普及一下渣男的性质
108 1
|
JavaScript 前端开发 Java
JavaScript中Map与WeakMap类型
JavaScript中Map与WeakMap类型