JavaScript - WeakMap 物件



JavaScript 中的 WeakMap 物件是鍵值對的集合,其中鍵是弱引用的。WeakMap 的鍵必須是物件或未註冊的符號,而值可以是任何任意 JavaScript 型別。

WeakMap 類似於 JavaScript Map。WeakMap 和 Map 資料結構之間的主要區別在於 WeakMap 資料結構僅使用物件作為鍵,而 Map 可以使用其他資料型別作為鍵。

如果除了物件之外,您使用其他資料型別的作為 WeakMap 的鍵,則會引發型別錯誤。

語法

您可以按照以下語法在 JavaScript 中使用 WeakMap:

const weak_map = new WeakMap();

在以上語法中,我們使用 'new' 關鍵字和 WeakMap() 函式來建立一個新的 WeakMap 例項。

WeakMap 提供了設定、獲取和刪除 WeakMap 中鍵值對的方法。這裡,我們列出了 WeakMap 的屬性和方法。

WeakMap 屬性

以下是 WeakMap 屬性及其描述的列表:

序號 名稱和描述
1

constructor

獲取 WeakMap 的建構函式。

WeakMap 方法

以下是與 WeakMap 物件關聯的方法及其描述的列表:

序號 名稱和描述
1

delete()

從 WeakMap 中刪除單個鍵值對。

2

get()

獲取與特定物件相關的值。

3

has()

檢查特定物件是否存在於 WeakMap 中作為鍵。

4

set()

在 WeakMap 中插入鍵值對。

WeakMap 建構函式()

以下是 JavaScript 中的 WeakMap 建構函式:

序號 名稱和描述
1

WeakMap()

建立 WeakMap 物件。

示例

示例:將鍵值對插入 WeakMap

在下面的示例中,我們使用建構函式定義了 WeakMap。之後,我們使用 set() 方法將 laptop 物件設定為鍵,並將它的價格設定為值。

最後,我們使用 get() 方法獲取與“laptop”鍵相關的值。

<html>
<body>
   <p id = "output">The laptop price is: </p>
   <script>
      const wm = new WeakMap();
      const laptop = {
         brand: "HP",
         model: "Pavilion",
      }
      wm.set(laptop, 100000);
      document.getElementById("output").innerHTML += wm.get(laptop);
   </script>
</body>
</html>

輸出

The laptop price is: 100000

如果我們執行程式,它將返回與“laptop”鍵相關的值,即“10000”。

示例:從 WeakMap 中刪除鍵值對

在下面的示例中,我們使用 set() 方法在 WeakMap 中插入了鍵值對。

之後,我們使用 delete() 方法從 WeakMap 中刪除了鍵值對。刪除鍵值對後,當您訪問它時,WeakMap 將返回 undefined,如輸出所示。

注意 - WeakMap 在 JavaScript 中不可迭代。

<html>
<body>
   <div id = "output1">The laptop price is:  </div>
   <div id = "output2">The laptop price after deletion is:  </div>
   <script>
      const wm = new WeakMap();
      const laptop = {
         brand: "HP",
         model: "Pavilion",
      }
      wm.set(laptop, 100000);
      document.getElementById("output1").innerHTML += wm.get(laptop);

      wm.delete(laptop);
      document.getElementById("output2").innerHTML += wm.get(laptop);
   </script>
</body>
</html>

輸出

The laptop price is: 100000
The laptop price after deletion is: undefined

它返回“undefined”,因為鍵值對已從 WeakMap 中刪除。

WeakMap 在 JavaScript 中不可迭代
廣告