ES6 WeakMap 을 통 해 메모리 누 출 문 제 를 해결 합 니 다.
1. 정의
맵 대상 은 데이터 구조 사전 과 유사 한 키 쌍 을 저장 합 니 다.전통 적 인 대상 이 문자열 을 키 로 만 사용 할 수 있 는 것 과 달리 Map 대상 은 임의의 값 키 를 사용 할 수 있 습 니 다.
2. 문법
new Map([iterable])
속성
조작 방법
옮 겨 다 니 는 방법
3. 예시
조작 방법
let m = new Map([
['foo', 11],
['bar', 22]
]);
m.set('mazey', 322)
.set('mazey', 413);
console.log(m); // {"foo" => 11, "bar" => 22, "mazey" => 413}
console.log(m.has('mazey')); // true
m.delete('mazey');
console.log(m.has('mazey')); // false
m.clear();
console.log(m); // {}
옮 겨 다 니 는 방법
let m = new Map([
['foo', 11],
['bar', 22],
['mazey', 413]
]);
console.log(m); // {"foo" => 11, "bar" => 22, "mazey" => 413}
console.log(m.keys()); // MapIterator {"foo", "bar", "mazey"}
console.log(m.values()); // MapIterator {11, 22, 413}
console.log(m.entries()); // MapIterator {"foo" => 11, "bar" => 22, "mazey" => 413}
m.forEach((value, key, map) => {
console.log(" :%s, :%s", key, value);
});
// :foo, :11
// :bar, :22
// :mazey, :413
2. WeakMap
1. 정의
WeakMap 대상 은 키 쌍 을 저장 합 니 다. Map 과 달리 키 는 대상 이 어야 합 니 다. 키 는 약 한 참조 이기 때문에 키 대상 이 사라 진 후에 자동 으로 메모 리 를 방출 합 니 다.
2. 문법
new WeakMap([iterable])
방법.
주의 하 다.
위 크 맵 의 특수 한 쓰레기 수 거 메커니즘 때문에 클 리 어 (clear) 방법 이 없다.
3. 예시
let obj = {
foo: 11
};
let wm = new WeakMap();
wm.set(obj, 413322);
console.log(wm); // {{…} => 413322}
console.log(wm.has(obj)); // true
3. WeakMap 을 통 해 메모리 누 출 문 제 를 해결 합 니 다.
Dom 대상 바 인 딩 이 벤트 를 사용 할 때 Dom 대상 이 사라 진 후 메모리 (null 설치) 를 제때에 방출 하지 않 으 면 메모리 에 계속 존재 합 니 다.WeakMap 을 사용 하여 Dom 대상 을 저장 하면 이러한 문제 가 발생 하지 않 습 니 다. Dom 대상 이 사라 지면 JS 의 쓰레기 회수 체 제 는 사용 하 는 메모 리 를 자동 으로 방출 하기 때 문 입 니 다.
let wm = new WeakMap();
let btn = document.querySelector('#btn');
wm.set(btn, {count: 0});
btn.addEventListener('click', () => {
let v = wm.get(btn);
v.count++;
console.log(wm.get(btn).count);
});
// 1 2 3 4 5...
ES6 WeakMap 을 통 해 메모리 누 출 문 제 를 해결 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.