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 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.