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 对象。