?um/p1-90`Mapはkey/value pairのcollectionであり、keysとvaluesはいずれも任意のECMAScript language valueであってよい。distinctなkey valueは、Mapのcollection内の1つのkey/value pairにだけ出現してよい。distinctなkey valuesは
Mapは、平均的にcollection内のelements数に対してsublinearなaccess timeを提供するhash tableまたはその他のmechanismsを用いて実装されなければならない。この仕様で用いられるdata structureは、Mapのrequired observable semanticsをdescribeすることだけを意図している。viable implementation modelであることは意図されていない。
Map
extends 句内の値として使用できる。指定された Map の動作を継承しようとするサブクラスコンストラクターは、Map.prototype の組み込みメソッドをサポートするために必要な内部状態でサブクラスインスタンスを作成し初期化するため、Map コンストラクターへの super 呼び出しを含めなければならない。このfunctionは、呼び出されたときに次のstepsを実行する:
parameter iterableがpresentである場合、それは
The abstract operation AddEntriesFromIterable takes arguments target (an Object), iterable (an ECMAScript language value, but not
parameter iterableは、
Map
callbackはtwo argumentsをacceptするfunctionであるべきである。groupByはitems内の各elementについてascending orderでcallbackを1回callし、新しいMapをconstructする。callbackによりreturnedされた各valueはMap内のkeyとして使用される。そのような各keyについて、result Mapはkeyがそのkeyであり、valueがcallbackがそのkeyを返したすべてのelementsを含むarrayであるentryを持つ。
callbackはtwo arguments、すなわちelementのvalueとelementのindexでcallされる。
groupByのreturn valueはMapである。
このfunctionは、呼び出されたときに次のstepsを実行する:
Map.prototypeのinitial valueは
このpropertyはattributes { [[Writable]]:
Map[%Symbol.species%]は、set accessor functionが
このfunctionの
derived collection objectsをcreateするmethodsは、derived objectsをcreateするために使用する
Map prototype objectは:
このmethodは、呼び出されたときに次のstepsを実行する:
その
Map.prototype.constructorのinitial valueは
このmethodは、呼び出されたときに次のstepsを実行する:
value
このmethodは、呼び出されたときに次のstepsを実行する:
このmethodは、呼び出されたときに次のstepsを実行する:
callbackはthree argumentsをacceptするfunctionであるべきである。forEachはMap内にpresentな各key/value pairについて、key insertion orderでcallbackを1回callする。callbackは、実際に存在するMapのkeysについてのみcallされ、Mapからdeletedされたkeysについてはcallされない。
thisArg parameterがprovidedされた場合、それはcallbackの各invocationにおける
callbackはthree arguments、すなわちitemのvalue、itemのkey、およびtraversedされるMapでcallされる。
forEachは、それが呼び出されたobjectをdirectly mutateしないが、そのobjectはcallbackのcallsによってmutatedされるかもしれない。mapの[[MapData]]の各entryは1回だけvisitedされる。forEachへのcallがbeginsした後にaddedされたnew keysはvisitedされる。keyがvisitedされた後にdeletedされ、その後forEach callがcompletesする前にre-addedされた場合、そのkeyはrevisitedされる。forEachへのcallがbeginsした後、visitedされる前にdeletedされたkeysは、forEach callがcompletesする前にkeyが再びaddedされない限り、visitedされない。
このmethodは、呼び出されたときに次のstepsを実行する:
このmethodは、呼び出されたときに次のstepsを実行する:
このmethodは、呼び出されたときに次のstepsを実行する:
このmethodは、呼び出されたときに次のstepsを実行する:
このmethodは、呼び出されたときに次のstepsを実行する:
このmethodは、呼び出されたときに次のstepsを実行する:
Map.prototype.sizeは、set accessor functionが
このmethodは、呼び出されたときに次のstepsを実行する:
このpropertyはattributes { [[Writable]]:
Map instancesは
Map Iteratorは、あるspecific Map instance objectに対するspecific iterationをrepresentするobjectである。Map Iterator objectsにはnamed
The abstract operation CreateMapIterator takes arguments map (an ECMAScript language value) and kind (
%MapIteratorPrototype% objectは:
このpropertyはattributes { [[Writable]]:
Set objectsは
Set objectsは、平均的にcollection内のelements数に対してsublinearなaccess timeを提供するhash tableまたはその他のmechanismsを用いて実装されなければならない。この仕様で用いられるdata structureは、Set objectsのrequired observable semanticsをdescribeすることだけを意図している。viable implementation modelであることは意図されていない。
Set Recordは、Setまたはsimilar objectのinterfaceをencapsulateするために使用される
Set Recordsは
| Field Name | Value | Meaning |
|---|---|---|
| [[SetObject]] | Object | Setまたはsimilar object。 |
| [[Size]] |
non-negative |
objectのreported size。 |
| [[Has]] |
|
objectのhas method。
|
| [[Keys]] |
|
objectのkeys method。
|
The abstract operation GetSetRecord takes argument obj (an ECMAScript language value) and returns either a
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 呼び出しを含めなければならない。このfunctionは、呼び出されたときに次のstepsを実行する:
Set
Set.prototypeのinitial valueは
このpropertyはattributes { [[Writable]]:
Set[%Symbol.species%]は、set accessor functionが
このfunctionの
derived collection objectsをcreateするmethodsは、derived objectsをcreateするために使用する
Set prototype objectは:
このmethodは、呼び出されたときに次のstepsを実行する:
このmethodは、呼び出されたときに次のstepsを実行する:
その
Set.prototype.constructorのinitial valueは
このmethodは、呼び出されたときに次のstepsを実行する:
value
このmethodは、呼び出されたときに次のstepsを実行する:
このmethodは、呼び出されたときに次のstepsを実行する:
iteration purposesにおいて、Setは各entryがkeyとvalueに同じvalueを持つMapにsimilarに見える。
このmethodは、呼び出されたときに次のstepsを実行する:
callbackはthree argumentsをacceptするfunctionであるべきである。forEachは
thisArg parameterがprovidedされた場合、それはcallbackの各invocationにおける
callbackはthree argumentsでcallされる:first two argumentsはSet内にcontainedされるvalueである。両方のargumentsには同じvalueがpassedされる。traversedされる
MapおよびArrayのforEach methodsで使用されるcall back functionsとconsistentにするため、callbackはthree argumentsでcallされる。Setでは、各item valueはkeyとvalueの両方であるとconsideredされる。
forEachは、それが呼び出されたobjectをdirectly mutateしないが、そのobjectはcallbackのcallsによってmutatedされるかもしれない。
各valueは通常1回だけvisitedされる。しかし、valueがvisitedされた後にdeletedされ、その後forEach callがcompletesする前にre-addedされた場合、そのvalueはrevisitedされる。forEachへのcallがbeginsした後、visitedされる前にdeletedされたvaluesは、forEach callがcompletesする前にvalueが再びaddedされない限り、visitedされない。forEachへのcallがbeginsした後にaddedされたnew valuesはvisitedされる。
このmethodは、呼び出されたときに次のstepsを実行する:
このmethodは、呼び出されたときに次のstepsを実行する:
このmethodは、呼び出されたときに次のstepsを実行する:
このmethodは、呼び出されたときに次のstepsを実行する:
このmethodは、呼び出されたときに次のstepsを実行する:
iteration purposesにおいて、Setは各entryがkeyとvalueに同じvalueを持つMapにsimilarに見える。
Set.prototype.sizeは、set accessor functionが
このmethodは、呼び出されたときに次のstepsを実行する:
このmethodは、呼び出されたときに次のstepsを実行する:
このmethodは、呼び出されたときに次のstepsを実行する:
このpropertyはattributes { [[Writable]]:
Set instancesは
Set Iteratorは、下でdefinedされるstructureを持つ
The abstract operation CreateSetIterator takes arguments set (an ECMAScript language value) and kind (
%SetIteratorPrototype% objectは:
このpropertyはattributes { [[Writable]]:
WeakMapはkey/value pairのcollectionsであり、keysはobjectsおよび/またはsymbolsであり、valuesは任意の
implementationは、WeakMapのkey/value pairがinaccessibleになる時点と、そのkey/value pairがWeakMapからremovedされる時点との間に、arbitrarily determined latencyをimposeしてもよい。このlatencyがECMAScript programにobservableであったなら、それはprogram executionに影響し得るindeterminacyのsourceとなる。そのため、ECMAScript implementationは、observed keyをobserverにpresentすることをrequireしないWeakMapのkeyをobserveするmeansを一切provideしてはならない。
WeakMapは、平均的にcollection内のkey/value pairs数に対してsublinearなaccess timeを提供するhash tableまたはその他のmechanismsを用いて実装されなければならない。この仕様で用いられるdata structureは、WeakMapのrequired observable semanticsをdescribeすることだけを意図している。viable implementation modelであることは意図されていない。
WeakMapおよびWeakSetは、WeakMapまたはWeakSet instanceが存在しない場合にobjectまたはsymbolがotherwise inaccessibleとなり、implementationのgarbage collection mechanismsによるresource reclamationのsubjectとなるときに、memory resourcesを“leak”しないmannerでstateをobjectまたはsymbolにdynamically associatingするためのmechanismsをprovideすることを意図している。このcharacteristicは、WeakMapまたはWeakSet instancesからkeysへのinverted per-object/symbol mappingを使用することでachievedできる。あるいは、各WeakMapまたはWeakSet instanceはそのkeyおよびvalue dataをinternally storeしてもよいが、このapproachはWeakMapまたはWeakSet implementationとgarbage collectorとのcoordinationをrequireする。以下のreferencesは、WeakMapおよびWeakSetのimplementationsにusefulであり得るmechanismをdescribeする:
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 呼び出しを含めなければならない。このfunctionは、呼び出されたときに次のstepsを実行する:
parameter iterableがpresentである場合、それは
WeakMap
WeakMap.prototypeのinitial valueは
このpropertyはattributes { [[Writable]]:
WeakMap prototype objectは:
WeakMap.prototype.constructorのinitial valueは
このmethodは、呼び出されたときに次のstepsを実行する:
value
このmethodは、呼び出されたときに次のstepsを実行する:
このmethodは、呼び出されたときに次のstepsを実行する:
このmethodは、呼び出されたときに次のstepsを実行する:
このmethodは、呼び出されたときに次のstepsを実行する:
このmethodは、呼び出されたときに次のstepsを実行する:
このpropertyはattributes { [[Writable]]:
WeakMap instancesは
WeakSetはobjectsおよび/またはsymbolsのcollectionsである。distinct objectまたはsymbolはWeakSetのcollectionのelementとして1回だけ出現してよい。WeakSetはspecific valueをcontainするかどうかqueryできるが、保持しているvaluesをenumerateするmechanismはprovidedされない。certain conditionsでは、
implementationは、WeakSet内にcontainedされるvalueがinaccessibleになる時点と、そのvalueがWeakSetからremovedされる時点との間に、arbitrarily determined latencyをimposeしてもよい。このlatencyがECMAScript programにobservableであったなら、それはprogram executionに影響し得るindeterminacyのsourceとなる。そのため、ECMAScript implementationは、observed valueをobserverにpresentすることをrequireしないparticular valueをWeakSetがcontainするかどうかをdetermineするmeansを一切provideしてはならない。
WeakSetは、平均的にcollection内のelements数に対してsublinearなaccess timeを提供するhash tableまたはその他のmechanismsを用いて実装されなければならない。この仕様で用いられるdata structureは、WeakSetのrequired observable semanticsをdescribeすることだけを意図している。viable implementation modelであることは意図されていない。
WeakSet
extends 句内の値として使用できる。指定された WeakSet の動作を継承しようとするサブクラスコンストラクターは、WeakSet.prototype の組み込みメソッドをサポートするために必要な内部状態でサブクラスインスタンスを作成し初期化するため、WeakSet コンストラクターへの super 呼び出しを含めなければならない。このfunctionは、呼び出されたときに次のstepsを実行する:
WeakSet
WeakSet.prototypeのinitial valueは
このpropertyはattributes { [[Writable]]:
WeakSet prototype objectは:
このmethodは、呼び出されたときに次のstepsを実行する:
WeakSet.prototype.constructorのinitial valueは
このmethodは、呼び出されたときに次のstepsを実行する:
value
このmethodは、呼び出されたときに次のstepsを実行する:
このpropertyはattributes { [[Writable]]:
WeakSet instancesは
The abstract operation CanonicalizeKeyedCollectionKey takes argument key (an ECMAScript language value) and returns an ECMAScript language value. It performs the following steps when called: