?
u
m
/
p
1-9
0
`
Map 은 키/값 쌍의 컬렉션이며 키와 값 모두 임의의
Map 은 평균적으로 컬렉션의 요소 수에 대해 준선형(sublinear) 접근 시간을 제공하는 해시 테이블 또는 다른 메커니즘을 사용하여 구현되어야 한다. 이 명세에서 사용하는 자료 구조는 Map 의 요구되는 관측 가능 의미를 설명하기 위한 것이며 실제 구현 모델이 되려는 목적은 아니다.
Map
extends
절 값으로 사용할 수 있다. 지정된 Map 동작을 상속하려는 서브클래스 Map.prototype
내장 메서드를 지원하는 데 필요한 내부 상태로 서브클래스 인스턴스를 생성·초기화하기 위해 Map super
호출을 포함해야 한다.이 함수는 호출 시 다음 단계를 수행한다:
매개변수 iterable 이 존재하면, 첫 번째 요소가 Map 키로 사용될 값이고 두 번째 요소가 그 키에 연결할 값인 2-요소 배열 유사 객체를 생성하는 이터레이터 객체를 반환하는
The abstract operation AddEntriesFromIterable takes arguments target (an Object), iterable (an ECMAScript language value, but not
매개변수 iterable 은 2-요소 배열 유사 객체를 생성하는 이터레이터 객체를 반환하는
Map
callback 은 두 인자를 받는 함수여야 한다. groupBy
는 items 의 각 요소에 대해 오름차순으로 한 번씩 callback 을 호출하고 새 Map 을 구성한다. callback 이 반환한 각 값은 Map 의 키로 사용된다. 그러한 키마다 결과 Map 은 그 키를 키로 하고 callback 이 그 키를 반환한 모든 요소가 담긴 배열을 값으로 갖는 엔트리를 가진다.
callback 은 요소의 값과 요소의 인덱스 두 인자로 호출된다.
groupBy
의 반환 값은 Map 이다.
이 함수는 호출 시 다음 단계를 수행한다:
Map.prototype
의 초기 값은
이 프로퍼티는 { [[Writable]]:
Map[%Symbol.species%]
는 set 접근자 함수가
이 함수의
파생 컬렉션 객체를 생성하는 메서드는 파생 객체를 생성할 때 사용할
Map 프로토타입 객체는:
이 메서드는 호출 시 다음 단계를 수행한다:
기존 [[MapData]]
Map.prototype.constructor
의 초기 값은
이 메서드는 호출 시 다음 단계를 수행한다:
값
이 메서드는 호출 시 다음 단계를 수행한다:
이 메서드는 호출 시 다음 단계를 수행한다:
callback 은 세 인자를 받는 함수여야 한다. forEach
는 Map 에 존재하는 각 키/값 쌍을 키 삽입 순서대로 한 번씩 callback 에 전달한다. callback 은 실제 존재하는 키에 대해서만 호출되며 Map 에서 삭제된 키에 대해서는 호출되지 않는다.
thisArg 가 제공되면 각 호출의
callback 은 (값, 키, 순회 중인 Map) 세 인자로 호출된다.
forEach
자체는 호출된 객체를 직접 변이하지 않지만 callback 호출에 의해 변이될 수 있다. Map 의 [[MapData]] 각 엔트리는 한 번만 방문된다. 호출 시작 후 추가된 새 키는 방문된다. 이미 방문된 키가 삭제되고 다시 추가되면 다시 방문된다. 시작 후 방문되기 전에 삭제된 키는 재추가되지 않는 한 방문되지 않는다.
이 메서드는 호출 시 다음 단계를 수행한다:
이 메서드는 호출 시 다음 단계를 수행한다:
이 메서드는 호출 시 다음 단계를 수행한다:
이 메서드는 호출 시 다음 단계를 수행한다:
Map.prototype.size
는 set 접근자 함수가
이 메서드는 호출 시 다음 단계를 수행한다:
이 프로퍼티 특성은 { [[Writable]]:
Map 인스턴스는
Map Iterator 는 특정 Map 인스턴스 객체에 대한 특정 순회를 나타내는 객체이다. Map Iterator 객체에 대한 이름 있는
The abstract operation CreateMapIterator takes arguments map (an ECMAScript language value) and kind (
%MapIteratorPrototype% 객체:
이 프로퍼티 특성은 { [[Writable]]:
Set 객체는
Set 객체는 평균적으로 컬렉션 요소 수에 대해 준선형 접근 시간을 제공하는 해시 테이블 또는 다른 메커니즘으로 구현되어야 한다. 이 명세의 자료 구조는 Set 객체의 요구되는 관측 가능 의미를 설명하기 위한 것으로 실제 구현 모델을 의도하지 않는다.
Set Record 는 Set 또는 유사 객체의 인터페이스를 캡슐화하기 위해 사용되는
Set Record 는
필드 이름 | 값 | 의미 |
---|---|---|
[[SetObject]] | an Object | 해당 Set 또는 유사 객체. |
[[Size]] |
a non-negative |
객체의 보고된 크기. |
[[Has]] | a function object |
객체의 has 메서드.
|
[[Keys]] | a function object |
객체의 keys 메서드.
|
The abstract operation GetSetRecord takes argument obj (an ECMAScript language value) and returns
The abstract operation SetDataHas takes arguments setData (a
The abstract operation SetDataIndex takes arguments setData (a
The abstract operation SetDataSize takes argument setData (a
Set
extends
절 값으로 사용할 수 있다. 지정된 Set 동작을 상속하려는 서브클래스 Set.prototype
내장 메서드를 지원하는 데 필요한 내부 상태로 서브클래스 인스턴스를 생성·초기화하기 위해 Set super
호출을 포함해야 한다.이 함수는 호출 시 다음 단계를 수행한다:
Set
Set.prototype
의 초기 값은
이 프로퍼티는 { [[Writable]]:
Set[%Symbol.species%]
는 set 접근자 함수가
이 함수의
파생 컬렉션 객체를 생성하는 메서드는 파생 객체 생성을 위해 사용할
Set 프로토타입 객체는:
이 메서드는 호출 시 다음 단계를 수행한다:
이 메서드는 호출 시 다음 단계를 수행한다:
기존 [[SetData]]
Set.prototype.constructor
의 초기 값은
이 메서드는 호출 시 다음 단계를 수행한다:
값
이 메서드는 호출 시 다음 단계를 수행한다:
이 메서드는 호출 시 다음 단계를 수행한다:
순회 목적상 Set 은 각 엔트리의 키와 값이 같은 Map 과 유사하게 보인다.
이 메서드는 호출 시 다음 단계를 수행한다:
callback 은 세 인자를 받는 함수여야 한다. forEach
는 Set 객체에 존재하는 각 값을 값 삽입 순서대로 한 번씩 callback 에 전달한다. callback 은 실제 존재하는 값에 대해서만 호출되며 삭제된 값에 대해서는 호출되지 않는다.
thisArg 가 제공되면 각 호출의
callback 은 세 인자로 호출되며 처음 두 인자는 Set 에 포함된 같은 값이고 세 번째 인자는 순회 중인 Set 객체이다.
세 인자 호출 형태는 Map 과 Array 의 forEach
콜백 형태와 일관성을 유지하기 위함이다. Set 에서는 각 항목 값이 키이자 값으로 간주된다.
forEach
는 대상 객체를 직접 변이하지 않지만 callback 호출에 의해 변이될 수 있다.
각 값은 일반적으로 한 번만 방문된다. 그러나 방문 후 삭제됐다가 forEach
완료 전에 재추가되면 다시 방문된다. 시작 후 방문되기 전에 삭제된 값은 재추가되지 않는 한 방문되지 않는다. 시작 후 추가된 새 값은 방문된다.
이 메서드는 호출 시 다음 단계를 수행한다:
이 메서드는 호출 시 다음 단계를 수행한다:
이 메서드는 호출 시 다음 단계를 수행한다:
이 메서드는 호출 시 다음 단계를 수행한다:
이 메서드는 호출 시 다음 단계를 수행한다:
순회 목적상 Set 은 각 엔트리의 키와 값이 같은 Map 과 유사하게 보인다.
Set.prototype.size
는 set 접근자 함수가
이 메서드는 호출 시 다음 단계를 수행한다:
이 메서드는 호출 시 다음 단계를 수행한다:
이 메서드는 호출 시 다음 단계를 수행한다:
이 프로퍼티 특성은 { [[Writable]]:
Set 인스턴스는
Set Iterator 는 아래 정의된 구조를 가지며 특정 Set 인스턴스 객체에 대한 특정 순회를 나타내는
The abstract operation CreateSetIterator takes arguments set (an ECMAScript language value) and kind (
%SetIteratorPrototype% 객체:
이 프로퍼티 특성은 { [[Writable]]:
WeakMap 은 키가 객체 및/또는 심볼이고 값이 임의의
구현은 WeakMap 의 키/값 쌍이 더 이상 접근 불가능(inaccessible) 해진 시점과 그 키/값 쌍이 WeakMap 에서 제거되는 시점 사이에 임의로 결정된 지연(latency)을 부과할 수 있다. 이 지연이 ECMAScript 프로그램에 관측 가능하다면 프로그램 실행에 영향을 줄 수 있는 불확정성의 원천이 될 것이다. 이러한 이유로 ECMAScript 구현은 관찰자가 관찰하려는 키를 제시하지 않고 WeakMap 의 키를 관찰할 수 있는 어떤 수단도 제공해서는 안 된다.
WeakMap 은 평균적으로 컬렉션의 키/값 쌍 수에 대해 준선형 접근 시간을 제공하는 해시 테이블 또는 다른 메커니즘으로 구현되어야 한다. 명세에서 사용하는 자료 구조는 WeakMap 의 요구되는 관측 가능 의미를 설명하기 위한 것이며 실제 구현 모델을 의도하지 않는다.
WeakMap 과 WeakSet 은 WeakMap 또는 WeakSet 인스턴스가 없었다면 해당 객체 혹은 심볼이 접근 불가능해져서 구현의 가비지 컬렉션 메커니즘에 의해 자원 회수 대상이 되었을 경우 메모리 자원을 “누출”하지 않는 방식으로 객체나 심볼에 상태를 동적으로 연관시키기 위한 메커니즘을 제공하기 위해 설계되었다. 이 특성은 WeakMap 또는 WeakSet 인스턴스에서 키로 객체/심볼을 역으로 매핑(inverted per-object/symbol mapping)하는 방식으로 달성할 수 있다. 또는 각 WeakMap/WeakSet 인스턴스가 내부적으로 키와 값 데이터를 저장할 수도 있으나 이 방식은 구현과 가비지 컬렉터 사이의 협조가 필요하다. 다음 참조들은 WeakMap 과 WeakSet 구현에 유용할 수 있는 메커니즘을 설명한다:
Barry Hayes. 1997. Ephemerons: a new finalization mechanism. In Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications (OOPSLA '97), A. Michael Berman (Ed.). ACM, New York, NY, USA, 176-183, http://doi.acm.org/10.1145/263698.263733.
Alexandra Barros, Roberto Ierusalimschy, Eliminating Cycles in Weak Tables. Journal of Universal Computer Science - J.UCS, vol. 14, no. 21, pp. 3481-3497, 2008, http://www.jucs.org/jucs_14_21/eliminating_cycles_in_weak
WeakMap
extends
절 값으로 사용할 수 있다. 지정된 WeakMap 동작을 상속하려는 서브클래스 WeakMap.prototype
내장 메서드를 지원하는 데 필요한 내부 상태로 서브클래스 인스턴스를 생성·초기화하기 위해 WeakMap super
호출을 포함해야 한다.이 함수는 호출 시 다음 단계를 수행한다:
매개변수 iterable 이 존재하면 첫 요소가 WeakMap 키로 사용될 값이고 두 번째 요소가 그 키에 연결할 값인 2-요소 배열 유사 객체를 생성하는 이터레이터 객체를 반환하는
WeakMap
WeakMap.prototype
의 초기 값은
이 프로퍼티는 { [[Writable]]:
WeakMap 프로토타입 객체는:
WeakMap.prototype.constructor
의 초기 값은
이 메서드는 호출 시 다음 단계를 수행한다:
값
이 메서드는 호출 시 다음 단계를 수행한다:
이 메서드는 호출 시 다음 단계를 수행한다:
이 메서드는 호출 시 다음 단계를 수행한다:
이 프로퍼티 특성은 { [[Writable]]:
WeakMap 인스턴스는
WeakSet 은 객체 및/또는 심볼의 컬렉션이다. 하나의 고유 객체나 심볼은 WeakSet 컬렉션에서 한 번만 요소로 등장할 수 있다. WeakSet 은 특정 값을 포함하는지 질의할 수 있지만, 보
구현은 WeakSet 이 포함한 값이 접근 불가능하게 된 시점과 그 값이 WeakSet 에서 제거되는 시점 사이에 임의로 결정된 지연을 부과할 수 있다. 이 지연이 ECMAScript 프로그램에 관측 가능하다면 프로그램 실행에 영향을 줄 수 있는 불확정성의 원인이 된다. 이러한 이유로 ECMAScript 구현은 관찰자가 관찰된 값을 제시하지 않고 WeakSet 이 특정 값을 포함하는지 결정할 수 있는 수단을 제공해서는 안 된다.
WeakSet 은 평균적으로 컬렉션 요소 수에 대해 준선형 접근 시간을 제공하는 해시 테이블 또는 다른 메커니즘으로 구현되어야 한다. 명세에서 사용하는 자료 구조는 WeakSet 의 요구되는 관측 가능 의미를 설명하기 위한 것이며 실제 구현 모델을 의도하지 않는다.
WeakSet
extends
절 값으로 사용할 수 있다. 지정된 WeakSet 동작을 상속하려는 서브클래스 WeakSet.prototype
내장 메서드를 지원하는 데 필요한 내부 상태로 서브클래스 인스턴스를 생성·초기화하기 위해 WeakSet super
호출을 포함해야 한다.이 함수는 호출 시 다음 단계를 수행한다:
WeakSet
WeakSet.prototype
의 초기 값은
이 프로퍼티는 { [[Writable]]:
WeakSet 프로토타입 객체는:
이 메서드는 호출 시 다음 단계를 수행한다:
WeakSet.prototype.constructor
의 초기 값은
이 메서드는 호출 시 다음 단계를 수행한다:
값
이 메서드는 호출 시 다음 단계를 수행한다:
이 프로퍼티 특성은 { [[Writable]]:
WeakSet 인스턴스는
The abstract operation CanonicalizeKeyedCollectionKey takes argument key (an ECMAScript language value) and returns an ECMAScript language value. It performs the following steps when called: