JavaScript - WeakMap 对象
JavaScript 中的 WeakMap 对象是键值对的集合,其中键是弱引用。WeakMap 的键必须是对象或未注册的符号,值可以是任意 JavaScript 类型。
WeakMap 与 JavaScript 的 Map 类似。WeakMap 和 Map 数据结构的主要区别在于,WeakMap 数据结构仅使用对象作为键,而 Map 也可以使用其他数据类型作为键。
如果将对象以外的其他数据类型的值用作 WeakMap 的键,则会引发 Types 错误。
语法
您可以按照以下语法在 JavaScript 中使用 WeakMap -
const weak_map = new WeakMap();
在上述语法中,我们使用了 'new' 关键字和 WeakMap() 函数来创建一个新的 WeakMap 实例。
WeakMap 提供了设置、获取和删除 WeakMap 中键值对的方法。这里,我们列出了 WeakMap 的属性和方法。
WeakMap 属性
以下是 WeakMap 的属性列表及其说明 -
| Sr.No. | 名称 & 说明 |
|---|---|
| 1 |
获取 WeakMap 的构造函数。 |
WeakMap 方法
以下是与 WeakMap 对象相关的方法及其说明的列表 -
| Sr.No. | 名称 & 说明 |
|---|---|
| 1 |
从 WeakMap 中删除单个键值对。 |
| 2 |
获取与特定对象相关的值。 |
| 3 |
检查特定对象是否存在,因为键存在于WeakMap。 |
| 4 |
在 WeakMap 中插入键值对。 |
WeakMap 构造函数()
以下是 JavaScript 中的 WeakMap 构造函数 -
| Sr.No. | 名称和说明 |
|---|---|
| 1 |
创建 WeakMap 对象。 |
示例
示例:将键值对插入 WeakMap
在下面的示例中,我们使用构造函数定义了 WeakMap。之后,我们使用 set() 方法将 laptop 对象设置为键,并将其价格设置为值。
最后,我们使用 get() 方法获取与"laptop"键相关的值。
<html>
<body>
<p id = "output">The laptop price is: </p>
<script>
const wm = new WeakMap();
const laptop = {
brand: "HP",
model: "Pavilion",
}
wm.set(laptop, 100000);
document.getElementById("output").innerHTML += wm.get(laptop);
</script>
</body>
</html>
输出
The laptop price is: 100000
如果我们执行该程序,它将返回与"laptop"键相关的值,即"10000"。
示例:从 WeakMap 中删除键值对
在下面的示例中,我们使用 set() 方法将键值对插入到 WeakMap 中。
之后,我们使用 delete() 方法从 WeakMap 中删除该键值对。删除键值对后,访问 WeakMap 时,它会返回 undefined,如输出所示。
注意 − JavaScript 中的 WeakMap 不可迭代。
<html>
<body>
<div id = "output1">The laptop price is: </div>
<div id = "output2">The laptop price after deletion is: </div>
<script>
const wm = new WeakMap();
const laptop = {
brand: "HP",
model: "Pavilion",
}
wm.set(laptop, 100000);
document.getElementById("output1").innerHTML += wm.get(laptop);
wm.delete(laptop);
document.getElementById("output2").innerHTML += wm.get(laptop);
</script>
</body>
</html>
输出
The laptop price is: 100000 The laptop price after deletion is: undefined
由于键值对已从 WeakMap 中删除,因此返回"undefined"。
WeakMap 在 JavaScript 中不可迭代

