JavaScript WeakMap 사용 상세 정보
3681 단어 JavaScriptWeakMap
문법
new WeakMap([iterable])
매개 변수
iterable
Iterable은 하나의 수조(이원수조) 또는 다른 교체가 가능하며 그 요소는 키 값이 맞는 대상이다.각 키 값 쌍은 새 WeakMap에 추가됩니다.null은 undefined로 간주됩니다.
묘사
WeakMap의 키는 Object 유형일 수 있습니다.원본 데이터 유형은 키(예: Symbol)가 될 수 없습니다.
Why WeakMap?
자바스크립트에서 맵 API는 네 개의 API 방법으로 두 개의 수조 (키 하나, 값 저장) 를 함께 사용하도록 할 수 있다.이 맵에 값을 설정할 때 키와 값을 이 두 그룹의 끝에 추가합니다.따라서 키와 값의 인덱스가 두 개의 수조에 대응하도록 합니다.이 맵에서 값을 찾을 때, 모든 키를 훑어본 다음, 인덱스를 사용하여 값을 저장하는 그룹에서 해당하는 값을 검색해야 합니다.
그러나 이러한 실현은 두 가지 큰 단점이 있다. 우선 값을 부여하고 검색하는 작업은 모두 O(n)의 시간 복잡도(n은 키 값이 맞는 개수)이다. 왜냐하면 이 두 작업 모두 전체 수조를 두루 돌아다니며 일치해야 하기 때문이다.또 다른 단점은 메모리 유출을 초래할 수 있다는 것이다. 왜냐하면 수조는 키와 값을 계속 인용하기 때문이다.이런 인용 때문에 쓰레기 회수 알고리즘은 다른 인용이 없어도 그들을 회수 처리할 수 없다.
이에 비해 원생 WeakMap은 모든 키 대상의'약한 인용'을 보유하고 있으며, 이는 다른 인용이 존재하지 않을 때 쓰레기 수거가 정확하게 진행될 수 있음을 의미한다.원생 WeakMap의 구조는 특수하고 유효하며, 맵에 사용되는 키는 회수되지 않았을 때만 유효하다.
이러한 약한 인용 때문에 WeakMap의 키는 일일이 다 들 수 없다.만약 키가 일일이 들 수 있다면, 그 목록은 쓰레기 회수 메커니즘의 영향을 받아 불확실한 결과를 얻을 것이다.따라서 이런 유형의 대상의 키 값 목록을 원한다면 맵을 사용해야 합니다.
기본적으로 대상에 데이터를 추가하고 쓰레기 회수 메커니즘을 방해하지 않으려면 WeakMap을 사용할 수 있다.
속성
WeakMap 인스턴스
모든 WeakMap 인스턴스는 WeakMap에서 상속됩니다.prototype.
속성
WeakMap.prototype.constructor
WeakMap 인스턴스를 작성한 원형 함수를 반환합니다.WeakMap 함수는 기본값입니다.
방법
예제
WeakMap 사용
const wm1 = new WeakMap(),
wm2 = new WeakMap(),
wm3 = new WeakMap();
const o1 = {},
o2 = function(){},
o3 = window;
wm1.set(o1, 37);
wm1.set(o2, "azerty");
wm2.set(o1, o2); // value ,
wm2.set(o3, undefined);
wm2.set(wm1, wm2); // , WeakMap
wm1.get(o2); // "azerty"
wm2.get(o2); // undefined,wm2 o2
wm2.get(o3); // undefined, undefined
wm1.has(o2); // true
wm2.has(o2); // false
wm2.has(o3); // true ( undefined)
wm3.set(o1, 37);
wm3.get(o1); // 37
wm1.has(o1); // true
wm1.delete(o1);
wm1.has(o1); // false
하나의 띠를 이루다.clear() 메소드 클래스 WeakMap 클래스
class ClearableWeakMap {
constructor(init) {
this._wm = new WeakMap(init)
}
clear() {
this._wm = new WeakMap()
}
delete(k) {
return this._wm.delete(k)
}
get(k) {
return this._wm.get(k)
}
has(k) {
return this._wm.has(k)
}
set(k, v) {
this._wm.set(k, v)
return this
}
}
규범
Specification
Status
Comment
ECMAScript 2015 (6th Edition, ECMA-262) WeakMap
Standard
Initial definition.
ECMAScript (ECMA-262) WeakMap
Living Standard
다음은 JavaScript WeakMap 사용에 대한 상세한 내용입니다. JavaScript WeakMap에 대한 더 많은 자료는 저희의 다른 관련 글을 주목해 주십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.