NATIVE

settings_applicationsObject

NATIVE

Editing
  • account_tree
  • bug_report

ObjectMap

키(key)-값(value) 쌍을 저장하며 각 쌍의 삽입 순서를 기억한다. 아무 값이나 키 또는 값으로 사용할 수 있다.

설명

Map과 Object 비교

MapObject 객체는 매우 유사하다. 구조적으로 두 객체는 키(key)라는 식별자를 사용한다. 즉 키를 통해 값을 검색하고 삭제할 수 있다. 단지 우리는 Map 객체가 늦게 등장했다는 사실만 알 뿐이다. 사실 Map이라는 객체가 나오기 전까지 Object 객체가 비슷한 역할을 수행해 왔었다. 이렇다 보니 ECMAScript 팀이 바보가 아닌 이상은 역할이 겹치는 Map 객체를 힘들게 추가하지 않았을 것이라는 생각이 들 것이다. 그렇다면 두 객체가 어떠한 차이가 있는지 알아보자. 간단한 차이를 보여주지만 Map 객체를 명시적으로 선택하여 사용해야 하는 이유로는 충분하다.

항목MapObject
태생적오로지 키(key)와 값(value)에 충실한 객체이며 내부적으로 어떠한 숨겨진 키가 없으므로 사용하는 키와 충돌할 일이 없다. 기본적으로 프로토타입(prototype) 기반으로 객체가 구성되므로 사용자가 지정한 키와 충돌할 수 있다는 것을 고려해야 한다.
키 타입모든 값(함수, 객체 또는 원시 데이터)을 키를 사용한다String 또는 Symbol만 가능하다.
키 정렬키의 삽입 순서에 따라 정렬이 된다.근본적으로 키 순서에 대한 메커니즘이 완전하지 못하다.
크기키의 수는 기본적으로 size 프로퍼티로 명확하게 확인된다.Map 객체의 프로토타입 속성인 size처럼 적용된 키의 수를 확인하는 명확한 방법을 가지고 있지 않으므로 우회적인 방법을 사용해야 한다.
반복이터러블(iterable) 객체이므로 이터레이터(iterotor) 프토토콜을 준수한다. 따라서 직접적인 반복 처리가 가능하다.이터레이터(iterotor) 프토토콜을 준수하지 않으므로 직접적으로 반복할 수 없다.
성능단순히 키와 값을 추가하고 제거하는 일반적인 작업에서 Object보다 더 나은 성능을 갖는다.키와 값을 자주 추가하고 삭제하는 데에 최적화되어 있지 않다.
직렬화 및 구문 분석기본적인 지원이 없으므로 우회적인 방법으로 가능하다.JSON.parse(), JSON.stringify() 메소드를 사용하여 직렬화를 할 수 있다.

하위 트리 탐색

  • Constructor

    객체의 인스턴스(instance) 생성을 지원한다. 생성자 함수를 통해서만 생성이 가능하다.

    • Map()

      새로운 Map 객체의 인스턴스를 생성한다.

  • [[Prototype]]

    • Properties

      • @@species

        Map 객체의 생성자를 조회한다.

      • size

        항목(키) 수를 조회한다.

    • Methods

      • @@iterator

        삽입 순서에 따라 키(key)-값(value) 쌍을 생성하는 반복자(iterator) 객체를 반환한다.

      • clear()

        모든 항목을 제거한다.

      • delete()

        지정된 키를 통해 항목을 제거한다.

      • entries()

        삽입된 순서대로 각 항목의 키(key)-값(value) 쌍을 포함하는 새로운 반복자(iterator) 객체를 반환한다.

      • forEach()

        삽입된 항목을 순서에 따라 한번 순회하면서 지정된 함수를 실행한다. 

      • get()

        지정된 키(key)에 해당하는 값을 반환한다.

      • has()

        지정된 키(key)를 가진 항목이 존재하는지 여부를 반환한다.

      • keys()

        현재 Map 객체에 삽입된 순서대로 각 항목의 키(key)를 포함하는 새로운 반복자(iterator) 객체를 반환한다.

      • set()

        지정된 키(key)와 값(value)으로 새로운 항목을 추가하거나 업데이트 한다.

      • values()

        현재 Map 객체에 삽입된 순서대로 각 항목의 값(value)를 포함하는 새로운 반복자(iterator) 객체를 반환한다.

  • Static

    정적(static) 멤버를 의미하며 인스턴스(instance)에 상속되어 사용할 수 없고 오로지 하위를 포함하여 객체(object) 또는 인터페이스(interface) 자신에서 해당 멤버에 접근이 가능하다. 

    • Methods

      • groupBy()

        지정된 콜백 함수에서 반환된 값을 사용하여 지정된 반복 가능한 항목의 요소를 그룹화한다.

버전 명세

ECMAScript 2024(15th Edition)
#sec-map-objects

지원 웹브라우저