18 ECMAScript Standard Built-in Objects

ECMAScript ScriptまたはModuleがexecutionを開始するときには常に利用可能な特定のbuilt-in objectsがあります。その1つであるglobal objectは、executing programのglobal environmentの一部です。その他は、global objectのinitial propertiesとして、またはaccessible built-in objectsのpropertiesとして間接的にaccessできます。

特に指定されない限り、functionとしてcallableなbuilt-in objectは、10.3で記述されるcharacteristicsを持つbuilt-in function objectです。特に指定されない限り、built-in objectの[[Extensible]] internal slotはinitiallyにtrueというvalueを持ちます。すべてのbuilt-in function object[[Realm]] internal slotを持ち、そのvalueは、そのobjectがinitiallyに作成されたrealmRealm Recordです。

多くのbuilt-in objectsはfunctionsです:それらはargumentsを伴ってinvokedできます。さらにその一部はconstructorsです:それらはnew operatorとともに使用することを意図したfunctionsです。各built-in functionについて、この仕様は、そのfunctionが要求するargumentsと、そのfunction objectのpropertiesを記述します。各built-in constructorについて、この仕様はさらに、そのconstructorのprototype objectのpropertiesと、そのconstructorをinvokeするnew expressionによって返される特定のobject instancesのpropertiesを記述します。

特定のfunctionのdescriptionで別途指定されない限り、built-in functionまたはconstructorに、そのfunctionが要求すると指定される数より少ないargumentsが与えられた場合、そのfunctionまたはconstructorは、十分な追加argumentsが与えられ、それらの各argumentがundefined valueであったかのように、正確にbehaveしなければなりません。そのようなmissing argumentsは“not present”であるとみなされ、specification algorithmsによってそのようにidentifyされる場合があります。特定のfunctionのdescriptionにおいて、terms “this value”および“NewTarget”は、10.3で与えられる意味を持ちます。

特定のfunctionのdescriptionで別途指定されない限り、記述されるbuilt-in functionまたはconstructorに、そのfunctionが許すと指定される数より多いargumentsが与えられた場合、extra argumentsはcallによってevaluatedされ、その後functionによってignoredされます。ただし、implementationは、extra argumentの存在だけを根拠としてTypeError例外をthrowするものではない限り、そのようなargumentsに関係するimplementation specific behaviourを定義してもよいです。

Note 1

built-in functionsのsetに追加のcapabilitiesを加えるimplementationsは、既存のfunctionsに新しいparametersを追加するのではなく、新しいfunctionsを追加することによってそれを行うことが推奨されます。

特に指定されない限り、すべてのbuilt-in functionおよびすべてのbuilt-in constructorは、式Function.prototype20.2.3)のinitial valueであるFunction prototype objectを、その[[Prototype]] internal slotのvalueとして持ちます。

特に指定されない限り、すべてのbuilt-in prototype objectは、Object prototype object自体を除き、式Object.prototype20.1.3)のinitial valueであるObject prototype objectを、その[[Prototype]] internal slotのvalueとして持ちます。

この仕様がbuilt-in constructorのbehaviourをalgorithm stepsによって定義する場合、それは[[Call]][[Construct]]の両方のpurposesにおけるそのbehaviourです。そのようなalgorithmが2つの場合を区別する必要がある場合、NewTargetがundefinedであるかどうかをcheckし、これは[[Call]] invocationを示します。

constructorsとしてidentifyされていないbuilt-in function objectsは、特定のfunctionのdescriptionで別途指定されない限り、[[Construct]] internal methodをimplementしません。

constructorsでないbuilt-in function objectsは、特定のfunctionのdescriptionで別途指定されない限り、"prototype" propertyを持ちません。

この仕様で定義される各built-in functionは、CreateBuiltinFunction abstract operation(10.3.4)をcallすることによって作成されます。lengthおよびname parametersのvaluesは、以下で議論される"length"および"name" propertiesのinitial valuesです。prefix parameterのvaluesも同様に以下で議論されます。

constructorsを含むすべてのbuilt-in function objectは、そのvalueがnon-negative integral Numberである"length" propertyを持ちます。特に指定されない限り、このvalueは、function descriptionのsubclause headingに示されるrequired parametersの数です。Optional parametersおよびrest parametersはparameter countに含まれません。

Note 2

例えば、Array prototype object"map" propertyのinitial valueであるfunction objectは、subclause heading «Array.prototype.map (callback [ , thisArg])» の下で記述され、そこには2つのnamed arguments callbackおよびthisArgが示されており、後者はoptionalです;したがって、そのfunction object"length" propertyのvalueは1𝔽です。

特に指定されない限り、built-in function object"length" propertyはattributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true }を持ちます。

constructorsを含むすべてのbuilt-in function objectは、そのvalueがStringである"name" propertyを持ちます。特に指定されない限り、このvalueは、この仕様でそのfunctionに与えられるnameです。anonymous functionsとしてidentifyされるfunctionsは、empty Stringを"name" propertyのvalueとして使用します。objectsのpropertiesとして指定されるfunctionsについては、name valueは、そのfunctionにaccessするために使用されるproperty name stringです。built-in propertiesのgetまたはset accessor functionsとして指定されるfunctionsは、CreateBuiltinFunctionをcallするときにprefix parameterへ"get"または"set"(それぞれ)が渡されます。

"name" propertyのvalueは、property keyがSymbol valueである各built-in functionsについてexplicitlyに指定されます。そのようなexplicitly specified valueがprefix "get "または"set "で始まり、それが指定されるfunctionがbuilt-in propertyのgetまたはset accessor functionである場合、prefixを除いたvalueがname parameterへ渡され、value "get"または"set"(それぞれ)がCreateBuiltinFunctionをcallするときにprefix parameterへ渡されます。

特に指定されない限り、built-in function object"name" propertyはattributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true }を持ちます。

clauses 19から28まで、およびAnnex B.2に記述されるその他すべてのdata propertyは、特に指定されない限りattributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }を持ちます。

clauses 19から28まで、およびAnnex B.2に記述されるすべてのaccessor propertyは、特に指定されない限りattributes { [[Enumerable]]: false, [[Configurable]]: true }を持ちます。get accessor functionだけが記述されている場合、set accessor functionはdefault valueであるundefinedです。set accessorだけが記述されている場合、get accessorはdefault valueであるundefinedです。