このページはECMAScript® 2020 Language Specification17 ECMAScript Standard Built-in Objects章をJavaScriptの学習目的で私的に日本語訳したものであり、直訳と意訳および推測が混在しています。そのため内容については正確ではない可能性があります。正確な情報を知りたい場合は、原文をご覧ください。また一部訳者によるコメントが含まれていることがあります。※このサイトの内容で損害や不利益を受けたとしても当方は一切の責任を負いません。
目次


このページにIndexはありません

ECMAScriptには、ScriptまたはModuleが実行を開始するたびに使用できる特定の組み込みオブジェクトがあります。 1つはグローバルオブジェクト で、実行中のプログラムのレキシカル環境の一部です。 その他は、グローバルオブジェクトの初期プロパティとして、またはアクセス可能な組み込みオブジェクトのプロパティとして間接的にアクセスできるのオブジェクトです。

特に指定のない限り、関数として呼び出すことができる組み込みオブジェクトは、9.3で説明した特性を持つ組み込み関数オブジェクトです。 特に指定がない限り、組み込みオブジェクトの[[Extensible]]内部スロットの初期値はtrueです。 すべての組み込み関数オブジェクトには、[[Realm]]内部スロットがあり、その値は、オブジェクトが最初に作成されたレルムレルムレコードです。

組み込みオブジェクトの多くは引数を使用して呼び出すことができる関数です。 それらのいくつかはnew演算子で使用することを目的としたコンストラクターです。 この仕様では組み込み関数ごとに、その関数に必要な引数とその関数オブジェクトのプロパティについて説明しています。 また、組み込みコンストラクターごとに、そのコンストラクターのプロトタイプオブジェクトのプロパティと、そのコンストラクターを呼び出すnew式が返すオブジェクトインスタンスのプロパティについてに説明します。

特に指定されていない限り、組み込み関数またはコンストラクターが規定数よりも少ない引数が指定された場合、足りない引数をundefinedとして動作します。 ただし、欠落している引数が"not present"と見なされ、仕様アルゴリズムによっては引数が不足していると判断される場合があります。 特定の機能の説明において、"this値" および "NewTarget" という用語は、9.3で与えられた意味を持ちます。

特に指定されていない限り、組み込み関数またはコンストラクターで指定されているよりも引数が多い場合、余分な引数は呼び出し時に評価され、関数では無視されます。 ただし実装は、そのような引数に関連する実装固有の動作を定義できます。

実装で組み込み関数に機能を追加する場合、既存の関数に新しいパラメーターを追加するのではなく、新しい関数を追加することをお勧めします。

特に指定のない限り、すべての組み込み関数と組み込みコンストラクターには、[[Prototype]]内部スロットの値として、式Function.prototype19.2.3)の初期値であるFunctionプロトタイプオブジェクトがあります。

特に指定のない限り、すべての組み込みプロトタイプオブジェクトには、Objectプロトタイプオブジェクトを自体を除き、[[Prototype]]内部スロットの値として式Object.prototype19.1.3)の初期値であるObjectプロトタイプオブジェクトがあります。

コンストラクターとして識別されない組み込み関数オブジェクトは、特に指定されていない限り、[[Construct]]内部メソッドを実装しません。

この仕様で定義されている各組み込み関数は、CreateBuiltinFunction抽象操作(9.3.3)を呼び出すことによって作成されます。

コンストラクターを含むすべての組み込み関数オブジェクトには、整数値である"length"プロパティがあります。 特に指定がない限り、この値は、関数の説明の見出しに示されている名前付き引数の最大数と同じです。 オプションのパラメーター(括弧:[]で示される)またはレストパラメーター( «...name» の形式で示される)は、デフォルトの引数の数に含まれていません。

例:Arrayプロトタイプオブジェクトの"map"プロパティの場合

このプロパティは、« Array.prototype.map(callbackFn [、thisArg]) »という見出しで、解説されています。このプロパティの初期値は関数オブジェクトで、2つの名前付き引数callbackFnとthisArgがありますが、後者はオプションです。したがって、この関数オブジェクト"length"プロパティは1です。

特に指定のない限り、組み込み関数オブジェクト"length"プロパティの属性は{[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:true}です。

コンストラクターを含め、無名関数以外のすべての組み込み関数オブジェクトには、値が文字列である"name"プロパティがあります。 特に指定のない限り、この値は、この仕様で付けられた関数名です。 関数がオブジェクトのプロパティの場合、name値は関数へのアクセスに使用されるプロパティ名です。 組み込みプロパティのアクセサ関数のgetまたはsetとして指定された関数には、プロパティ名の文字列の前に"get"または"set"が付加されます。 "name"プロパティの値は、プロパティキーがSymbol値である組み込み関数ごとに明示的に指定されます。

特に指定のない限り、組み込み関数オブジェクト"name"プロパティは、属性{[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:true}を持ちます。

18から26章および付録B.2に記載されている他のすべてのデータプロパティの属性は、特に指定がない限り、{[[Writable]]:true,[[Enumerable]]:false,[[Configurable]]:true}です。

18から26章および付録B.2に記載されているすべてのアクセサプロパティの属性は、特に指定がない限り、{[[Enumerable]]:false,[[Configurable]]:true}です。 getアクセサー関数のみが記述されている場合、setアクセサー関数はデフォルト値(undefined)です。 setアクセサーのみが記述されている場合、getアクセサーはデフォルト値(undefined)です。