?uem/p1-90`Map은 키와 값 모두 임의의 ECMAScript language value일 수 있는 키/값 쌍의 컬렉션입니다. 서로 다른 키 값은 Map의 컬렉션 안에서 하나의 키/값 쌍에만 존재할 수 있습니다. 서로 다른 키 값은
Map은 평균적으로 컬렉션의 요소 수에 대해 선형보다 빠른 접근 시간을 제공하는 해시 테이블이나 그 밖의 메커니즘을 사용하여 구현해야 합니다. 이 명세에서 사용하는 데이터 구조는 Map에 요구되는 관찰 가능한 의미론을 설명하기 위한 것일 뿐입니다. 실제 구현 모델로 사용하려는 것은 아닙니다.
Map
extends 절에서 값으로 사용할 수 있습니다. 지정된 Map 동작을 상속하려는 하위 클래스 Map.prototype의 내장 메서드를 지원하는 데 필요한 내부 상태를 갖도록 하위 클래스 인스턴스를 생성하고 초기화하기 위해 Map super 호출을 포함해야 합니다.이 함수는 호출되면 다음 단계를 수행합니다:
매개변수 iterable이 존재하는 경우, 첫 번째 요소는 Map 키로 사용할 값이고 두 번째 요소는 해당 키와 연결할 값인 두 요소의
매개변수 iterable은 첫 번째 요소는 Map 키로 사용할 값이고 두 번째 요소는 해당 키와 연결할 값인 두 요소의
Map
callback은 두 인수를 받는 함수여야 합니다. groupBy는 items의 각 요소에 대해 오름차순으로 callback을 한 번씩 호출하고 새로운 Map을 구성합니다. callback이 반환하는 각 값은 Map의 키로 사용됩니다. 그러한 각 키에 대해 결과 Map에는 해당 키를 키로 하고 callback이 해당 키를 반환한 모든 요소를 포함하는 배열을 값으로 하는 항목이 있습니다.
callback은 요소의 값과 요소의 인덱스라는 두 인수로 호출됩니다.
groupBy의 반환 값은 Map입니다.
이 함수는 호출되면 다음 단계를 수행합니다:
Map.prototype의 초기 값은
이 프로퍼티는 { [[Writable]]:
Map[%Symbol.species%]는 set 접근자 함수가
이 함수의
파생 컬렉션 객체를 생성하는 메서드는 파생 객체를 생성하는 데 사용할
Map 프로토타입 객체는:
이 메서드는 호출되면 다음 단계를 수행합니다:
해당
Map.prototype.constructor의 초기 값은
이 메서드는 호출되면 다음 단계를 수행합니다:
값
이 메서드는 호출되면 다음 단계를 수행합니다:
이 메서드는 호출되면 다음 단계를 수행합니다:
callback은 세 인수를 받는 함수여야 합니다. forEach는 Map에 존재하는 각 키/값 쌍에 대해 키 삽입 순서로 callback을 한 번씩 호출합니다. callback은 Map에 실제로 존재하는 키에 대해서만 호출되며 Map에서 삭제된 키에 대해서는 호출되지 않습니다.
thisArg 매개변수가 제공되면 callback을 호출할 때마다
callback은 항목의 값, 항목의 키, 순회 중인 Map이라는 세 인수로 호출됩니다.
forEach는 호출된 객체를 직접 변경하지 않지만 callback 호출에 의해 객체가 변경될 수 있습니다. Map의 [[MapData]]에 있는 각 항목은 한 번만 방문됩니다. forEach 호출이 시작된 후 추가된 새로운 키는 방문됩니다. 키가 방문된 후 삭제되고 forEach 호출이 완료되기 전에 다시 추가되면 해당 키를 다시 방문합니다. forEach 호출이 시작된 후 방문되기 전에 삭제된 키는 forEach 호출이 완료되기 전에 다시 추가되지 않는 한 방문되지 않습니다.
이 메서드는 호출되면 다음 단계를 수행합니다:
이 메서드는 호출되면 다음 단계를 수행합니다:
이 메서드는 호출되면 다음 단계를 수행합니다:
이 메서드는 호출되면 다음 단계를 수행합니다:
이 메서드는 호출되면 다음 단계를 수행합니다:
이 메서드는 호출되면 다음 단계를 수행합니다:
Map.prototype.size는 set 접근자 함수가
이 메서드는 호출되면 다음 단계를 수행합니다:
이 프로퍼티는 { [[Writable]]:
Map 인스턴스는
Map Iterator는 특정 Map 인스턴스 객체에 대한 특정 순회를 나타내는 객체입니다. Map Iterator 객체에는 이름 있는
%MapIteratorPrototype% 객체는:
이 프로퍼티는 { [[Writable]]:
Set 객체는 ECMAScript language value의 컬렉션입니다. Set은 서로 다른 각 값을 최대 한 번만 포함할 수 있습니다. 서로 다른 값은
Set 객체는 평균적으로 컬렉션의 요소 수에 대해 선형보다 빠른 접근 시간을 제공하는 해시 테이블이나 그 밖의 메커니즘을 사용하여 구현해야 합니다. 이 명세에서 사용하는 데이터 구조는 Set 객체에 요구되는 관찰 가능한 의미론을 설명하기 위한 것일 뿐입니다. 실제 구현 모델로 사용하려는 것은 아닙니다.
Set Record는 Set 또는 유사한 객체의 인터페이스를 캡슐화하는 데 사용되는
Set Records에는
| 필드 이름 | 값 | 의미 |
|---|---|---|
| [[SetObject]] | an Object | Set 또는 유사한 객체입니다. |
| [[Size]] | a non-negative integer or +∞ | 보고된 객체의 크기입니다. |
| [[Has]] | a function object |
객체의 has 메서드입니다.
|
| [[Keys]] | a function object |
객체의 keys 메서드입니다.
|
Set
extends 절에서 값으로 사용할 수 있습니다. 지정된 Set 동작을 상속하려는 하위 클래스 Set.prototype의 내장 메서드를 지원하는 데 필요한 내부 상태를 갖도록 하위 클래스 인스턴스를 생성하고 초기화하기 위해 Set super 호출을 포함해야 합니다.이 함수는 호출되면 다음 단계를 수행합니다:
Set
Set.prototype의 초기 값은
이 프로퍼티는 { [[Writable]]:
Set[%Symbol.species%]는 set 접근자 함수가
이 함수의
파생 컬렉션 객체를 생성하는 메서드는 파생 객체를 생성하는 데 사용할
Set 프로토타입 객체는:
이 메서드는 호출되면 다음 단계를 수행합니다:
이 메서드는 호출되면 다음 단계를 수행합니다:
해당
Set.prototype.constructor의 초기 값은
이 메서드는 호출되면 다음 단계를 수행합니다:
값
이 메서드는 호출되면 다음 단계를 수행합니다:
이 메서드는 호출되면 다음 단계를 수행합니다:
순회 목적에서 Set은 각 항목의 키와 값이 동일한 Map과 유사하게 보입니다.
이 메서드는 호출되면 다음 단계를 수행합니다:
callback은 세 인수를 받는 함수여야 합니다. forEach는
thisArg 매개변수가 제공되면 callback을 호출할 때마다
callback은 세 인수로 호출됩니다. 처음 두 인수는 Set에 포함된 값입니다. 두 인수 모두에 동일한 값이 전달됩니다. 순회 중인
callback은 Map 및 Array의 forEach 메서드가 사용하는 콜백 함수와 일관성을 유지하기 위해 세 인수로 호출됩니다. Set에서는 각 항목 값이 키이자 값으로 간주됩니다.
forEach는 호출된 객체를 직접 변경하지 않지만 callback 호출에 의해 객체가 변경될 수 있습니다.
각 값은 일반적으로 한 번만 방문됩니다. 그러나 값이 방문된 후 삭제되고 forEach 호출이 완료되기 전에 다시 추가되면 다시 방문됩니다. forEach 호출이 시작된 후 방문되기 전에 삭제된 값은 forEach 호출이 완료되기 전에 다시 추가되지 않는 한 방문되지 않습니다. forEach 호출이 시작된 후 추가된 새로운 값은 방문됩니다.
이 메서드는 호출되면 다음 단계를 수행합니다:
이 메서드는 호출되면 다음 단계를 수행합니다:
이 메서드는 호출되면 다음 단계를 수행합니다:
이 메서드는 호출되면 다음 단계를 수행합니다:
이 메서드는 호출되면 다음 단계를 수행합니다:
순회 목적에서 Set은 각 항목의 키와 값이 동일한 Map과 유사하게 보입니다.
Set.prototype.size는 set 접근자 함수가
이 메서드는 호출되면 다음 단계를 수행합니다:
이 메서드는 호출되면 다음 단계를 수행합니다:
이 메서드는 호출되면 다음 단계를 수행합니다:
이 프로퍼티는 { [[Writable]]:
Set 인스턴스는
Set Iterator는 아래에 정의된 구조를 가지며 특정 Set 인스턴스 객체에 대한 특정 순회를 나타내는
%SetIteratorPrototype% 객체는:
이 프로퍼티는 { [[Writable]]:
WeakMap은 키가 객체 및/또는 Symbol이고 값은 임의의 ECMAScript language value일 수 있는 키/값 쌍의 컬렉션입니다. WeakMap에 특정 키를 갖는 키/값 쌍이 포함되어 있는지 조회할 수 있지만, 키로 보유하는 값을 열거하는 메커니즘은 제공되지 않습니다. 특정 조건에서는
구현체는 WeakMap의 키/값 쌍에 접근할 수 없게 된 시점과 해당 키/값 쌍이 WeakMap에서 제거되는 시점 사이에 임의로 정한 지연 시간을 둘 수 있습니다. 이 지연 시간을 ECMAScript 프로그램이 관찰할 수 있다면 프로그램 실행에 영향을 줄 수 있는 비결정성의 원인이 됩니다. 따라서 ECMAScript 구현체는 관찰자가 관찰 대상 키를 제시하지 않고도 WeakMap의 키를 관찰할 수 있는 수단을 제공해서는 안 됩니다.
WeakMap은 평균적으로 컬렉션의 키/값 쌍 수에 대해 선형보다 빠른 접근 시간을 제공하는 해시 테이블이나 그 밖의 메커니즘을 사용하여 구현해야 합니다. 이 명세에서 사용하는 데이터 구조는 WeakMap에 요구되는 관찰 가능한 의미론을 설명하기 위한 것일 뿐입니다. 실제 구현 모델로 사용하려는 것은 아닙니다.
WeakMap과 WeakSet은 WeakMap 또는 WeakSet 인스턴스가 없었다면 객체나 Symbol에 더 이상 접근할 수 없게 되어 구현체의 가비지 컬렉션 메커니즘에 의해 리소스 회수 대상이 되었을 경우 메모리 리소스를 “누수”하지 않는 방식으로 객체 또는 Symbol에 상태를 동적으로 연결하는 메커니즘을 제공하기 위한 것입니다. 이 특성은 객체/Symbol별로 WeakMap 또는 WeakSet 인스턴스를 키에 역매핑하는 방식을 사용하여 달성할 수 있습니다. 또는 각 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 키로 사용할 값이고 두 번째 요소는 해당 키와 연결할 값인 두 요소의
WeakMap
WeakMap.prototype의 초기 값은
이 프로퍼티는 { [[Writable]]:
WeakMap 프로토타입 객체는:
WeakMap.prototype.constructor의 초기 값은
이 메서드는 호출되면 다음 단계를 수행합니다:
값
이 메서드는 호출되면 다음 단계를 수행합니다:
이 메서드는 호출되면 다음 단계를 수행합니다:
이 메서드는 호출되면 다음 단계를 수행합니다:
이 메서드는 호출되면 다음 단계를 수행합니다:
이 메서드는 호출되면 다음 단계를 수행합니다:
이 프로퍼티는 { [[Writable]]:
WeakMap 인스턴스는
WeakSet은 객체 및/또는 Symbol의 컬렉션입니다. 서로 다른 객체나 Symbol은 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 인스턴스는