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…

results matching ""

    No results matching ""