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