?um/p1-90`Mapはキー/値ペアのコレクションであり、キーと値はいずれも任意のECMAScript言語値であってよいです。異なるキー値は、Mapのコレクション内の1つのキー/値ペアにのみ出現できます。異なるキー値は、
Mapは、平均してコレクション内の要素数に対してサブリニアなアクセス時間を提供するハッシュテーブルまたはその他の機構を使用して実装されなければなりません。この仕様で使用されるデータ構造は、Mapに要求される観察可能な意味論を記述することのみを意図しています。実行可能な実装モデルであることは意図していません。
Mapコンストラクターは以下の通りです:
extends節の値として使用できる。指定されたMapの動作を継承することを意図するサブクラスコンストラクターは、Map.prototype組み込みメソッドをサポートするために必要な内部状態を持つサブクラスインスタンスを作成して初期化するために、Mapコンストラクターへのsuper呼び出しを含めなければならない。この関数は呼び出されたとき、次の手順を実行します:
パラメーター iterable が存在する場合、それは、Mapキーとして使用される値を第1要素とし、そのキーに関連付ける値を第2要素とする2要素の
The
パラメーター iterable は、Mapキーとして使用される値を第1要素とし、そのキーに関連付ける値を第2要素とする2要素の
Mapコンストラクターは以下の通りです:
callback は2つの引数を受け取る関数であるべきです。groupByは、items 内の各要素について昇順に callback を1回ずつ呼び出し、新しいMapを構築します。callback によって返される各値は、Map内のキーとして使用されます。そのような各キーについて、結果のMapは、そのキーをキーとし、そのキーを返した callback のすべての要素を含む配列を値とするエントリーを持ちます。
callback は2つの引数、すなわち要素の値と要素のインデックスで呼び出されます。
groupByの戻り値はMapです。
この関数は呼び出されたとき、次の手順を実行します:
Map.prototypeの初期値は
このプロパティの属性は { [[Writable]]:
Map[%Symbol.species%]は、setアクセサー関数が
この関数の
派生コレクションオブジェクトを作成するメソッドは、派生オブジェクトを作成するために使用するコンストラクターを決定するため、
Mapプロトタイプオブジェクトは以下の通りです:
このメソッドは呼び出されたとき、次の手順を実行します:
既存の[[MapData]]
Map.prototype.constructorの初期値は
このメソッドは呼び出されたとき、次の手順を実行します:
値
このメソッドは呼び出されたとき、次の手順を実行します:
このメソッドは呼び出されたとき、次の手順を実行します:
callback は3つの引数を受け取る関数であるべきです。forEachは、Mapに存在する各キー/値ペアについて、キーの挿入順に callback を1回ずつ呼び出します。callback は実際に存在するMapのキーについてのみ呼び出され、Mapから削除されたキーについては呼び出されません。
thisArg パラメーターが提供された場合、それは callback の各呼び出しの
callback は3つの引数、すなわち項目の値、項目のキー、および走査されているMapで呼び出されます。
forEachは、それが呼び出されたオブジェクトを直接変更しませんが、callback の呼び出しによってそのオブジェクトが変更される可能性があります。Mapの[[MapData]]の各エントリーは1回だけ訪問されます。forEachの呼び出しが開始された後に追加された新しいキーは訪問されます。キーは、訪問された後に削除され、forEachの呼び出しが完了する前に再び追加された場合、再訪問されます。forEachの呼び出しが開始された後、訪問される前に削除されたキーは、forEachの呼び出しが完了する前にそのキーが再び追加されない限り、訪問されません。
このメソッドは呼び出されたとき、次の手順を実行します:
このメソッドは呼び出されたとき、次の手順を実行します:
このメソッドは呼び出されたとき、次の手順を実行します:
このメソッドは呼び出されたとき、次の手順を実行します:
このメソッドは呼び出されたとき、次の手順を実行します:
このメソッドは呼び出されたとき、次の手順を実行します:
Map.prototype.sizeは、setアクセサー関数が
このメソッドは呼び出されたとき、次の手順を実行します:
このプロパティの属性は { [[Writable]]:
Mapインスタンスは、
Map Iteratorは、ある特定のMapインスタンスオブジェクトに対する特定の反復を表すオブジェクトです。Map Iteratorオブジェクトには名前付きコンストラクターはありません。代わりに、Map IteratorオブジェクトはMapインスタンスオブジェクトの特定のメソッドを呼び出すことによって作成されます。
The
%MapIteratorPrototype%オブジェクトは以下の通りです:
このプロパティの属性は { [[Writable]]:
SetオブジェクトはECMAScript言語値のコレクションです。Setは、各異なる値を高々1回だけ含むことができます。異なる値は、
Setオブジェクトは、平均してコレクション内の要素数に対してサブリニアなアクセス時間を提供するハッシュテーブルまたはその他の機構を使用して実装されなければなりません。この仕様で使用されるデータ構造は、Setオブジェクトに要求される観察可能な意味論を記述することのみを意図しています。実行可能な実装モデルであることは意図していません。
Set Recordは、Setまたは類似オブジェクトのインターフェースをカプセル化するために使用される
Set Recordは、
| フィールド名 | 値 | 意味 |
|---|---|---|
| [[SetObject]] | Object | Setまたは類似オブジェクト。 |
| [[Size]] | 非負整数または +∞ | オブジェクトの報告されるサイズ。 |
| [[Has]] | 関数オブジェクト |
オブジェクトのhasメソッド。
|
| [[Keys]] | 関数オブジェクト |
オブジェクトのkeysメソッド。
|
The
The
The
The
Setコンストラクターは以下の通りです:
extends節の値として使用できる。指定されたSetの動作を継承することを意図するサブクラスコンストラクターは、Set.prototype組み込みメソッドをサポートするために必要な内部状態を持つサブクラスインスタンスを作成して初期化するために、Setコンストラクターへのsuper呼び出しを含めなければならない。この関数は呼び出されたとき、次の手順を実行します:
Setコンストラクターは以下の通りです:
Set.prototypeの初期値は
このプロパティの属性は { [[Writable]]:
Set[%Symbol.species%]は、setアクセサー関数が
この関数の
派生コレクションオブジェクトを作成するメソッドは、派生オブジェクトを作成するために使用するコンストラクターを決定するため、
Setプロトタイプオブジェクトは以下の通りです:
このメソッドは呼び出されたとき、次の手順を実行します:
このメソッドは呼び出されたとき、次の手順を実行します:
既存の[[SetData]]
Set.prototype.constructorの初期値は
このメソッドは呼び出されたとき、次の手順を実行します:
値
このメソッドは呼び出されたとき、次の手順を実行します:
このメソッドは呼び出されたとき、次の手順を実行します:
反復目的では、Setは各エントリーがキーと値に同じ値を持つMapに似て見えます。
このメソッドは呼び出されたとき、次の手順を実行します:
callback は3つの引数を受け取る関数であるべきです。forEachは、
thisArg パラメーターが提供された場合、それは callback の各呼び出しの
callback は3つの引数で呼び出されます。最初の2つの引数はSetに含まれる値です。同じ値が両方の引数に渡されます。走査されている
callback が3つの引数で呼び出されるのは、MapおよびArrayのforEachメソッドで使用されるコールバック関数と整合させるためです。Setでは、各項目値はキーでも値でもあるとみなされます。
forEachは、それが呼び出されたオブジェクトを直接変更しませんが、callback の呼び出しによってそのオブジェクトが変更される可能性があります。
各値は通常1回だけ訪問されます。ただし、値は訪問された後に削除され、forEachの呼び出しが完了する前に再び追加された場合、再訪問されます。forEachの呼び出しが開始された後、訪問される前に削除された値は、forEachの呼び出しが完了する前にその値が再び追加されない限り、訪問されません。forEachの呼び出しが開始された後に追加された新しい値は訪問されます。
このメソッドは呼び出されたとき、次の手順を実行します:
このメソッドは呼び出されたとき、次の手順を実行します:
このメソッドは呼び出されたとき、次の手順を実行します:
このメソッドは呼び出されたとき、次の手順を実行します:
このメソッドは呼び出されたとき、次の手順を実行します:
反復目的では、Setは各エントリーがキーと値に同じ値を持つMapに似て見えます。
Set.prototype.sizeは、setアクセサー関数が
このメソッドは呼び出されたとき、次の手順を実行します:
このメソッドは呼び出されたとき、次の手順を実行します:
このメソッドは呼び出されたとき、次の手順を実行します:
このプロパティの属性は { [[Writable]]:
Setインスタンスは、
Set Iteratorは、下記で定義される構造を持つ通常のオブジェクトであり、ある特定のSetインスタンスオブジェクトに対する特定の反復を表します。Set Iteratorオブジェクトには名前付きコンストラクターはありません。代わりに、Set IteratorオブジェクトはSetインスタンスオブジェクトの特定のメソッドを呼び出すことによって作成されます。
The
%SetIteratorPrototype%オブジェクトは以下の通りです:
このプロパティの属性は { [[Writable]]:
WeakMapは、キーがオブジェクトおよび/またはシンボルであり、値が任意のECMAScript言語値であってよいキー/値ペアのコレクションです。WeakMapは、特定のキーを持つキー/値ペアを含むかどうかを問い合わせることができますが、それがキーとして保持する値を列挙する機構は提供されません。特定の条件では、
実装は、WeakMapのキー/値ペアがアクセス不能になった時点から、そのキー/値ペアがWeakMapから削除される時点までの間に、任意に決定された遅延を課してもよいです。この遅延がECMAScriptプログラムから観察可能であった場合、それはプログラム実行に影響し得る不確定性の源となります。そのため、ECMAScript実装は、観察者が観察対象のキーを提示することを要求しない方法でWeakMapのキーを観察する手段を提供してはなりません。
WeakMapは、平均してコレクション内のキー/値ペア数に対してサブリニアなアクセス時間を提供するハッシュテーブルまたはその他の機構を使用して実装されなければなりません。この仕様で使用されるデータ構造は、WeakMapに要求される観察可能な意味論を記述することのみを意図しています。実行可能な実装モデルであることは意図していません。
WeakMapおよびWeakSetは、WeakMapまたはWeakSetインスタンスが存在しない場合にはそのオブジェクトまたはシンボルがアクセス不能になり、実装のガベージコレクション機構によるリソース回収の対象となるような状況で、メモリリソースを「リーク」しない方法で、オブジェクトまたはシンボルに状態を動的に関連付けるための機構を提供することを意図しています。この特性は、WeakMapまたはWeakSetインスタンスからキーへの、オブジェクト/シンボルごとの反転マッピングを使用することで達成できます。あるいは、各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キーとして使用される値を第1要素とし、そのキーに関連付ける値を第2要素とする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