Map
[key,value]
작성형태차이 : 이터러블(배열)로 작성
코드형태
- new Map([[“key”,”value1”]]);
사용가능한 key 타입
Object 는 String, Symbol
Map은 이외에도 오브젝트 사용 가능
ES3
- key 가 같아도 추가됨
ES5
strict mode key 같으면 추가되지 않음
작성 순서로 열거되는 것을 보장하지 않음
key값이 같으면 추가되지 않고 값이 대체됨
for-in 문에서 추가한 순서로 읽혀짐
엔진에서 별도의 일련번호를 부여하여 저장
Map사용환경
컬렉션일 때 사용성이 놓은
key value 형태이고 이터러블일때
작성한 순서 보장
오브젝트를 key로 사용
Object 오브젝트는 값과 함수가 혼합된 형태로 싱글톤 오브젝트
파라미터는 선택, 이터러블 오브젝트 장성
let emptyMap = new Map();
let newMap = new ([
[“key”, “value”],
[“key2”,”value”]
]);
키중복시 나중 value로 들어감
for of 로 인덱스 순서대로 전개
new Map([“one”,1]) -- error
set()
Map 인스턴스에 key, value 설정
key 값이 같으면 value를 대체
- 모든 경우에 해당되지 않음. get()에서 다룸
설정후 Map 인스턴스 반환
key 가 {},value 와 {},value는 다름
get()
- value 반환
has()
- key 존재 여부 반환
entries()
- iterator 오브젝트 변환
keys()
- key값을 반환하는 이터레이터 오브젝트 반환
values()
- value값을 반환하는 이터레이터 오브젝트 반환
foreach()
Map 인스턴스를 반복할때마다 callback 함수 호출
calback(value,key, Map 인스턴스)
delete()
- key로 삭제
clear()
- 모든 내용 삭제
Symbol.iterator
- 이터레이터 객체반환
WeakMap
오브젝트만 key로사용
string,symbol 등 프리미티브 사용불가
let music ={title:”music”}
music = {singer:”singer”}
title:”music” 을 사용할수 없게됨
GC
오브젝트 재할당
- 재할당하면 참조하는 메모리가 바뀌게 됨
메모리 지우기
참조할 수 없는 객체를 메모리 에서 지움
지우지 않으면 메모리 leak 발생
WeakMap 인스턴스에 GC 결과 자동반영 - 자동으로 존재하지 않는 오브젝트를 삭제(Map은 아님)
set(), get(), has(), delete()
열거 불가 : forEach(), entries() 없음
length 없음 : weakMap의 엘리먼트 수 제공 안함
Set
[value1, value2, valueN]
value 를 key 로 사용, value이면서 key
중첩되는 값은 하나만 설정
WeakSet
- GC…