初探 WeakMap
前言
最近抽空學習 WeakMap ,在此把學習的過程做個紀錄。
內容
WeakMap 用起來跟 Map 很像 ,只是 Key 的部分用的是 Object ,範例如下
let wm = new WeakMap(); let obj1 = {}; let obj2 = {}; let obj3 = {}; // wm.set( obj1 , 1234 ); console.log( wm.get(obj1) );//1234 // wm.delete( obj1 );// console.log( wm.get(obj1) );//undefined console.log( obj1 !== undefined );//true // obj1 = undefined; console.log( obj1 !== undefined );//false // wm.set( obj2 , obj3 ); console.log( wm.get(obj2) !== undefined );//true obj2 = undefined; console.log( obj3 !== undefined );//true
範例開始用 obj1 示範了 get() 與 set() 的基本用法,接著用 delete() 來刪除 ,要注意刪除後 obj1 不會被刪除,接著就是 WeakMap 與 Map 最大的不同, Map 不需要擔心 Key 會被從外部刪除,但 WeakMap 就要考慮,範例將 obj1 設為 undefiend 後就會發生 Key 消失,也正因為 obj1 消失,所以也就沒辦法用 get() 方式取得資料了!接著範例示範 Key 與 Value 都是 Object ,實驗如果 Key 消失了,Value 也會被刪除嗎?結果 Value 還是存在,只有 Key 會消失。
沒有留言:
張貼留言