WeakMap 和 WeakSet 與 Map 和 Set 類似,但在記憶體管理方面有關鍵差異。 WeakMap 和 WeakSet 都允許儲存對象,但它們 不會阻止在其他地方不再引用鍵或值時對它們進行垃圾回收。這使得它們在您需要儲存有關物件的元資料但不希望儲存不必要地保持這些物件處於活動狀態的情況下非常有用。
WeakMap 是鍵值對的集合,其中 鍵必須是物件,值可以是任何資料類型。 WeakMap 的關鍵特性是,當沒有其他對鍵的引用時,它不會阻止其鍵被垃圾收集。
您可以使用 WealMap 建構函式建立 WeakMap,並傳遞鍵值對陣列:
const weakMap = new WeakMap();
使用 set() 方法新增條目:
const weakMap = new WeakMap();
const obj = {}; const weakMap = new WeakMap(); weakMap.set(obj, 'This is a weak map entry'); console.log(weakMap.get(obj)); // Output: 'This is a weak map entry'
WeakSet 與Set 類似,但它只允許將物件 儲存為值,並且還允許對其元素進行自動垃圾回收當集合中沒有儲存物件的引用時。
您可以使用 WealSet 建構函式建立 WeakSet:
const obj1 = {}; const obj2 = {}; const weakMap = new WeakMap(); weakMap.set(obj1, 'value1'); weakMap.set(obj2, 'value2'); console.log(weakMap.get(obj1)); // Output: 'value1' console.log(weakMap.has(obj2)); // Output: true weakMap.delete(obj1); console.log(weakMap.has(obj1)); // Output: false
使用 add() 方法新增項目:
const weakMap = new WeakMap();
const obj = {}; const weakMap = new WeakMap(); weakMap.set(obj, 'This is a weak map entry'); console.log(weakMap.get(obj)); // Output: 'This is a weak map entry'
Feature | WeakMap | WeakSet | Map | Set |
---|---|---|---|---|
Key/Value Types | Keys must be objects, values can be any type | Values must be objects | Keys and values can be any type | Values must be unique, any type |
Garbage Collection | Automatically garbage-collected when no references to the key | Automatically garbage-collected when no references to the value | Does not remove entries unless manually deleted | Does not remove entries unless manually deleted |
Iterability | Not iterable | Not iterable | Iterable (can loop through entries) | Iterable (can loop through values) |
Methods | set(), get(), has(), delete() | add(), has(), delete() | set(), get(), has(), delete() | add(), has(), delete() |
WeakMap 用例:
WeakSet 用例:
嗨,我是 Abhay Singh Kathayat!
我是一名全端開發人員,擁有前端和後端技術的專業知識。我使用各種程式語言和框架來建立高效、可擴展且用戶友好的應用程式。
請隨時透過我的商務電子郵件與我聯繫:kaashshorts28@gmail.com。
以上是掌握 JavaScript 中的 WeakMap 與 WeakSet:高效能記憶體管理的詳細內容。更多資訊請關注PHP中文網其他相關文章!