- 只接受物件作為key欄位,不接受其他类型的值。
- WeakMap不能遍歷,其成員是弱引用,隨時可能消失,因為垃圾回收機制可能會因為在WeakSet裡頭的物件沒被引用,就回收掉它,所以要注意這點,如果有引用過,但後續沒使用到該值也忘記取消引用,就會產生記憶體無法釋放的問題。
WeakMap有以下幾個方法:
- get(key):透過key,返回該成員值。
- set(key,value):新增成員,不返回值。
- has(value):查詢其成員內有無這個值,返回布林值。
- delete(value):刪除成員值,返回布林值。
const wm=new WeakMap();
const obj = {wow: "Hello World"};
wm.set(obj,'wow');
console.log(wm);
console.log(wm.get(obj));
console.log(wm.has(obj));
wm.delete(obj);
console.log(wm.get(obj));
程式碼