JavaScript WeakMap 中 .clear() 方法有什麼作用?


WeakMap 是 JavaScript 中的一種集合。這種型別的集合用於以鍵值對的形式儲存資料。在 WeakMap 中,鍵必須是物件,值可以是任何型別。

由於鍵必須是物件,因此這種集合被稱為 WeakMap。物件可以被垃圾回收,這與 Map 相比是一個缺點。

在 JavaScript WeakMap 中,clear() 函式用於刪除整個 WeakMap 或移除 WeakMap 中的所有元素。

語法

WeakMap 的語法如下所示。

mapName.clear()

它不接受任何引數,並清除給定 WeakMap 中的所有元素。

示例 1

此示例演示了在 JavaSCriptL 中 WeakMap 中 clear() 函式的使用。

var wkMap=new Map(); wkMap.set(1,"Articles"); wkMap.set(2,"Reference APIs"); wkMap.set(3,"New Technologies"); console.log("WeakMap elements and size before invoking clear():","",wkMap, wkMap.size); wkMap.clear(); console.log("WeakMap elements and size after invoking clear():",wkMap,wkMap.size);

示例 2

此示例演示了在 JavaScript 中 WeakMap 的 clear() 函式的使用。在此示例中,我們使用 .has(),以下是它的語法。

WeakMapName.has(specificElement) // returns a Boolean result

如果當前 WeakMap 物件包含指定的元素,則此函式返回 true。

var wkMap=new Map(); wkMap.set(1,"Articles"); wkMap.set(2,"Reference APIs"); wkMap.set(3,"New Technologies"); console.log("WeakMap elements and size before invoking clear():",wkMap, wkMap.size); console.log("A specific element is present before using clear():",wkMap.has(1)) wkMap.clear(); console.log("WeakMap elements and size after invoking clear():",wkMap,wkMap.size); console.log("A specific element is present after using clear():",wkMap.has(1))

在上面的示例中,clear() 的功能已透過使用 WeakMap 的另一個函式即 has() 函式來展示。如果指定的元素存在於 WeakMap 中,則此函式將返回布林結果。

如果在呼叫 clear() 函式之前檢查指定元素是否存在,則 has() 函式返回“true”。如果在呼叫 clear() 函式之後檢查相同的元素,則 has() 將返回“false”,這表明該元素已被刪除。

示例 3

以下是您自己的 WeakMap 的實現。

class ClearableWeakMap { constructor(init) { this._wm = new WeakMap(init) } clear() { this._wm = new WeakMap() } delete(key) { return this._wm.delete(key) } get(key) { return this._wm.get(key) } has(key) { return this._wm.has(key) } set(key, value) { this._wm.set(key, value) return this } } let weakMap = new ClearableWeakMap(); let obj = function() {}; weakMap.set(obj, "test"); console.log(weakMap.has(obj));

更新於: 2022-08-26

421 次檢視

開啟您的 職業生涯

完成課程獲得認證

開始學習
廣告