49 lines
1.4 KiB
JavaScript
49 lines
1.4 KiB
JavaScript
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`)
|
|
|