Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

자바스크립트 WeakMap 인스턴스의 주요 메서드 총정리

자바스크립트의 WeakMap은 키(key)가 반드시 객체여야 하며, 해당 객체에 대한 약한 참조(weak reference)를 유지하는 특수한 컬렉션입니다. 이러한 특성 덕분에 키로 사용된 객체가 다른 곳에서 더 이상 참조되지 않으면 가비지 컬렉터가 자동으로 회수할 수 있어, 메모리 누수 방지에 유용합니다.

WeakMap 인스턴스에서 사용할 수 있는 대표적인 메서드는 다음과 같습니다.

1. WeakMap.prototype.delete(key)

지정된 키와 연결된 값을 제거합니다. 삭제에 성공하면 true를 반환하며, 이후 has() 메서드는 해당 키에 대해 false를 반환합니다.

const wm = new WeakMap();
const obj = {};
wm.set(obj, '데이터');

wm.delete(obj); // true
wm.has(obj);    // false

2. WeakMap.prototype.get(key)

지정된 키와 연결된 값을 반환합니다. 만약 해당 키가 WeakMap에 존재하지 않으면 undefined를 반환합니다.

const wm = new WeakMap();
const user = { name: '홍길동' };
wm.set(user, '관리자');

console.log(wm.get(user)); // '관리자'
console.log(wm.get({}));   // undefined

3. WeakMap.prototype.has(key)

WeakMap 객체 안에 지정된 키와 연결된 값이 존재하는지 여부를 나타내는 불리언(Boolean) 값을 반환합니다.

const wm = new WeakMap();
const key = {};

wm.set(key, 123);
console.log(wm.has(key)); // true

wm.delete(key);
console.log(wm.has(key)); // false

4. WeakMap.prototype.set(key, value)

WeakMap 객체에서 지정된 키에 대한 값을 설정합니다. 키는 반드시 객체 또는 등록된 심볼(non-registered symbol)이어야 하며, 메서드 호출 후에는 체이닝(chaining)을 할 수 있도록 WeakMap 객체 자신을 반환합니다.

const wm = new WeakMap();
const obj = {};

wm.set(obj, '값1').set(obj, '값2'); // 메서드 체이닝 가능
console.log(wm.get(obj)); // '값2'

참고 사항

WeakMap은 키의 열거가 불가능하기 때문에 size 속성이나 keys(), values(), forEach() 같은 순회 메서드를 제공하지 않습니다. 따라서 WeakMap은 DOM 요소에 임시 데이터를 저장하거나, 객체에 비공개(private) 데이터를 연결하는 용도로 주로 활용됩니다.