JavaScript - WeakMap 对象



JavaScript 中的 WeakMap 对象是键值对的集合,其中的键是弱引用的。WeakMap 键必须是对象或未注册的 Symbol ,并且值是任意 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 的属性列表及其描述 -

名称 描述
constructor

获取 WeakMap.

WeakMap 方法

以下是与 WeakMap 对象相关的方法列表及其描述 -

名称 描述
delete()

从 WeakMap 中删除单个键值对。

get()

获取与特定对象相关的值。

has()

检查 WeakMap 中存在 key 时是否存在特定对象。

set()

在 WeakMap 中插入键值对。

WeakMap 构造函数()

以下是 JavaScript 中的 WeakMap 构造函数 -

名称 名称和描述
WeakMap()

创建 WeakMap 对象。

例子

示例:向 WeakMap 插入键值对

在下面的示例中,我们使用 constructor 函数定义了 WeakMap。之后,我们使用 set() 方法将 laptop 对象设置为 key,并将其 price 设置为值。

最后,我们使用 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,如输出所示。

注意 − 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”。