Javascript 弱映射中的 .clear() 方法有什么用?

javascriptobject oriented programmingprogramming

弱映射是 JavaScript 中的集合。这种类型的集合用于以键值对的形式存储数据。在弱映射中,键必须是对象,值可以是任何类型。

由于键必须是对象,因此此集合被称为弱映射。对象可以被垃圾回收,与 Map 相比,这是一个缺点。

在 JavaScript WeakMap 中,clear() 函数用于删除整个弱映射或移除弱映射中的所有元素。

语法

弱映射的语法如下。

mapName.clear()

这不会接受任何参数并清除给定 WeakMap 中的所有元素。

示例 1

此示例演示了 JavaSCriptL 中 WeakMap 中 clear() 函数的用法 −

var wkMap=new Map(); wkMap.set(1,"Articles"); wkMap.set(2,"Reference APIs"); wkMap.set(3,"New Technologies"); console.log("WeakMap elements and size before invoking clear():","",wkMap, wkMap.size); wkMap.clear(); console.log("WeakMap elements and size after invoking clear():",wkMap,wkMap.size);

示例 2

此示例演示了 JavaScript 中 WeakMap 的 clear() 函数的用法。在此示例中,我们使用 .has(),以下是其语法。

WeakMapName.has(specificElement) // 返回布尔结果

如果当前 WeakMap 对象具有指定元素,则此函数返回 true。

var wkMap=new Map(); wkMap.set(1,"Articles"); wkMap.set(2,"Reference APIs"); wkMap.set(3,"New Technologies"); console.log("WeakMap elements and size before invoking clear():",wkMap, wkMap.size); console.log("A specific element is present before using clear():",wkMap.has(1)) wkMap.clear(); console.log("WeakMap elements and size after invoking clear():",wkMap,wkMap.size); console.log("A specific element is present after using clear():",wkMap.has(1))

在上面的例子中,clear() 的功能通过使用另一个弱映射函数(即 has() 函数)来显示。此函数将返回布尔结果,以表明指定元素是否存在于 WeakMap 中。

如果在调用 clear() 函数之前检查指定元素是否存在,则 has() 函数将返回"true"。如果在调用 clear() 函数之后检查同一元素,则 has() 将返回"false",从而得出该元素已被删除的结论。

示例 3

以下是您自己的 WeakMap 的实现。

class ClearableWeakMap { constructor(init) { this._wm = new WeakMap(init) } clear() { this._wm = new WeakMap() } delete(key) { return this._wm.delete(key) } get(key) { return this._wm.get(key) } has(key) { return this._wm.has(key) } set(key, value) { this._wm.set(key, value) return this } } let weakMap = new ClearableWeakMap(); let obj = function() {}; weakMap.set(obj, "test"); console.log(weakMap.has(obj));

相关文章