JavaScript 中 “weakMap.has()” 方法的用途?


键值对使用 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 对象的“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 对象。

更新于: 2022 年 8 月 23 日

100 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告