위크맵
위크맵
은 부차적인 데이터를 저장할 곳이 필요할 때 사용
- 서드파티 라이브러리와 같은 외부 코드에 ‘속한’ 객체를 가지고 작업을 해야 한다고 가정, 추가해 줄 데이터는 객체가 살아있는 동안에만 유효한 상황에
위크맵
에 원하는 데이터를 저장하고, 이때 키는 객체를 사용. 이렇게 하면 객체가 가비지 컬렉션의 대상이 될 때, 데이터도 함께 사라짐
weakMap.set(john, "비밀문서");
캐싱
캐싱
은 시간이 오래 걸리는 작업의 결과를 저장해서 연산 시간과 비용을 절약해주는 기법
- 동일한 함수를 여러 번 호출해야 할 때, 최초 호출 시 반환된 값을 어딘가에 저장해 놓았다가 그 다음엔 함수를 호출하는 대신 저장된 값을 사용하는 게
캐싱
의 실례
let cache = new Map();
function process(obj) {
if (!cache.has(obj)) {
let result = obj;
cache.set(obj, result);
}
return cache.get(obj);
}
let obj = {};
let result1 = process(obj);
let result2 = process(obj);
obj = null;
alert(cache.size);
let cache = new WeakMap();
function process(obj) {
if (!cache.has(obj)) {
let result = obj;
cache.set(obj, result);
}
return cache.get(obj);
}
let obj = {};
let result1 = process(obj);
let result2 = process(obj);
obj = null;