在 JavaScript 中使用"weakMap.has()"方法?

front end technologyjavascriptobject oriented programming

使用 JavaScript WeakMap 对象存储键值对。WeakMap 对象与 Map 对象的区别在于,此类对象应被弱引用,并且"对象"应作为键存储在 WeakMap 对象中。相比之下,您可以向 Map 对象添加简单值,如字符串、布尔值、符号和数字。

WeakMap 对象存储松散,因此如果删除了对特定键的引用或删除了对象,垃圾收集将在验证该值已映射到相关对象后删除 WeakMap 元素。

JavaScript 内置函数weakMap.has() 用于返回一个布尔值,指示具有此类特定键的元素是否存在于weakmap 对象中。

语法

以下是 has() 方法的语法

weakMap.has(key)

参数

  • key − 必需。元素的键,用于检查 WeakMap 对象是否存在。

返回值

布尔值

如果给定的键与 WeakMap 对象中的元素匹配,则该函数返回 true;否则,返回 false。

示例 1

这是一个使用weakMap.has() 技术的简单示例。

<!DOCTYPE html> <html> <title>Use of 'weakMap.has()' method in JavaScript - TutorialsPoint</title> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body style="text-align:center"> <script> function myFunc() { const myWeakMap = new WeakMap(); const key = {}; myWeakMap.set(key, 'tutorialspoint'); document.write(myWeakMap.has(key)); } myFunc(); </script> </body> </html>

示例 2

让我们看一个 JavaScript 示例来了解这种函数如何运行 -

<!DOCTYPE html> <html> <title>Use of 'weakMap.has()' method in JavaScript - TutorialsPoint</title> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body style="text-align:center"> <script> const myWeakmap = new WeakMap(); const myKey = {}; myWeakmap.set(myKey, 'tutorialspoint'); document.write(myWeakmap.has(myKey)); </script> </body> </html>

示例 3

在此示例中,让我们了解,如果在最后未设置weakMap对象的键"key1",则此例中的输出为false。

<!DOCTYPE html> <html> <title>Use of 'weakMap.has()' method in JavaScript - TutorialsPoint</title> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body style="text-align:center"> <script> // written to Create a WeakMap() object const myWeakMap = new WeakMap(); // written to Create a key "myKey" const myKey = {}; // written to test if the key is present // in the weakMap() object or not document.write(myWeakMap.has(myKey)); </script> </body> </html>

示例 4

在此示例中,让我们了解如何使用 delete() 方法移除或删除 JavaScript WeakMap 对象的元素。您想要从"weakMapObject"中移除的键将作为输入传递给 delete() 方法。如果成功删除了提供的键,则 delete() 方法返回"true";否则,如果在weakMapObject 中找不到定义的键,则返回"false"

以下示例中使用 JavaScript 的"delete()"方法从"weakmap"对象中删除了"myObject"。但首先,让我们制作以下对象:

为了确认"myObject"在删除之前和之后仍存在于weakmap中,我们还将使用WeakMap Object"has()"方法:

<!DOCTYPE html> <html> <title>Use of 'weakMap.has()' method in JavaScript - TutorialsPoint</title> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body style="text-align:center"> <script> let myWeakMap = new WeakMap(); let myObject = {student: "Steve Smith"}; myWeakMap.set(myObject, 'Welcome to tutorialspoint'); document.write(myWeakMap.has(myObject) +'<br>'); myWeakMap.delete(myObject); document.write(myWeakMap.has(myObject)); </script> </body> </html>

上面的输出表明我们成功从"weakmap"对象中删除了"myObject"。由于"myObject"当时在weakmap对象中仍然可用,因此第一个 has() 函数返回"true"。在 JavaScript Weakset 对象上使用 delete() 函数后,myObject 被从weakmap对象中删除,第二个 has() 方法返回"false"。

简介

要记录安全性较弱的键值对,请使用 JavaScript WeakMap 对象。与 Map 不同,字符串、符号、布尔值和数字等原始值不能存储在 WeakMap 对象中。WeakMap 对象可用于存储 DOM 元素的浏览器元数据或在类中构造私有变量。本文使用适当的示例阐明了 JavaScript WeakMap 对象。


相关文章