Javascript 简明教程
JavaScript - The WeakMap Object
JavaScript 中的 WeakMap 对象是一个键值对的集合,其中键是弱引用的。WeakMap 键必须是对象或未注册符号,且值是任何任意 JavaScript 类型。
WeakMap 与 JavaScript Map 类似。WeakMap 和 Map 数据结构之间主要的区别在于 WeakMap 数据结构仅使用对象作为键,而 Map 也可将其他数据类型用作键。
如果您将其他数据类型的值用作 WeakMap 的键(对象除外),则会引发类型错误。
Syntax
您可以按照以下语法在 JavaScript 中使用 WeakMap:
const weak_map = new WeakMap();
在以上语法中,我们使用带有 WeakMap() 函数的“new”关键字创建 WeakMap 的新实例。
WeakMap 提供了从 WeakMap 中设置、获取和删除 key-value 对的方法。在此,我们列出了 WeakMap 的属性和方法。
WeakMap Properties
以下是对 WeakMap 属性及其说明的列表:
Sr.No. |
Name & Description |
1 |
constructor 获取 WeakMap 的构造函数。 |
WeakMap Methods
以下是对 WeakMap 对象相关联的方法及其说明的列表:
Sr.No. |
Name & Description |
1 |
delete() 从 WeakMap 中删除单个键值对。 |
2 |
get() 获取与特定对象相关的键值。 |
3 |
has() 检查某个特定对象是否存在于 WeakMap 中。 |
4 |
set() 向 WeakMap 中插入键值对。 |
WeakMap Constructor()
以下是在 JavaScript 中使用 WeakMap 构造函数 -
Sr.No. |
Name & Description |
1 |
WeakMap() 创建 WeakMap 对象。 |
Examples
Example: Inserting key-value pair to the 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"。
Example: Deleting key-value pair from the WeakMap
在下面的示例中,我们使用 set() 方法向 WeakMap 中插入了键值对。
然后,我们使用 delete() 方法从 WeakMap 中删除了键值对。在删除键值对然后访问它时,WeakMap 会返回未定义,如你可以在输出中看到的那样。
Note − WeakMap 在 JavaScript 中不可迭代。
<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"。