javascript-learner/5.7weak/t.js

49 lines
1.4 KiB
JavaScript
Raw Permalink Normal View History

2024-06-21 22:40:45 +02:00
console.log("js garbage recyle");
let john = {name: "John"};
john = null;
console.log(john);
john = {name: "John"};
array = [john];
john = null;
console.log(`array[0]: ${array[0].name}`);
console.log("==========WeakMap==========");
console.log("WeakMap must use obj as keys in map, the string or other primitive values are not allowed");
let weakMap = new WeakMap();
let obj = {};
weakMap.set(obj, "ok");
console.log(`weakMap.set(obj, "ok");`)
console.log(`weakMap.get(obj): ${weakMap.get(obj)}`)
//weakMap.set("test", "Whoops");
console.log("If we use an object as the key, and this object has no other references to that obj, it will be removed from the memory automatically");
console.log(`obj = null`)
obj = null;
console.log(`obj has been removed from the memory`)
console.log(`obj cannot be used in map as well`)
console.log(`weakmap only has four methods:
weakMap.set(key, value)
weakMap.get(key)
weakMap.delete(key)
weakMap.has(key)`)
console.log(`Useage: if the obj dies, the secret disappears:
weakMap.set(john, "secret documents);`)
let visitsCountMap = new Map();
function countUser(user){
let count = visitsCountMap.get(user) || 0;
visitsCountMap.set(user, count + 1);
}
console.log(`weakset only has three methods:
weakSet.add(key)
weakSet.delete(key)
weakSet.has(key)`)
console.log(`both weakset and weakmap has no length/size method`)