訳の正確性を保証するものではありませんので必要に応じて原文であるEcma InternationalのECMA-262にある ECMA-262.pdf ( ECMA-262 5.1 Edition )を参照下さい。
訳:2012年04月 webzoit.net
特定の組み込みオブジェクトは、ECMAScriptプログラムが実行を開始する度に利用可能です。 その1つとしてGlobalオブジェクトは、実行中のプログラムの語彙的な環境の一部です。 それ以外は、Globalオブジェクトの内部プロパティとしてアクセス可能です。 特段に記述されない限りにおいては、組み込みオブジェクトの内部プロパティ[[Class]]は、その組み込みオブジェクトが内部プロパティ[[Call]]を持つ場合には、"Function"であり、その組み込みオブジェクトが内部プロパティ[[Call]]を持たない場合には、"Object"です。 特段に記述されない限りにおいては、組み込みオブジェクトの内部プロパティ[[Extensible]]は、最初は値trueを持ちます。 多くの組み込みオブジェクトは関数であり、引数を伴って実行することが可能です。 それらの内の一部は、更にコンストラクタであり、それらは、new 演算子を伴って使用することを意図した関数です。 各組み込み関数について、この仕様は、関数とFunctionオブジェクトのプロパティによって要求される引数を説明します。 各組み込み関数について、この仕様は、更にコンストラクタのプロトタイプオブジェクトのプロパティ、また、コンストラクタを実行する式 new によって返される特定のオブジェクトのインスタンスを指定するプロパティを説明します。 特定の関数の概要について特段の記述がない場合には、この項で説明した関数やコンストラクタが、1つ以上の複数の引数を要求することが記述された関数を与えられる場合、その関数やコンストラクタは、引数がundefinedという値(未定義値)である場合にも、まるで十分にオプションの引数があったかのように確実に動作させましょう。 特定の関数の概要について特段の記述がない場合には、この項で説明した関数やコンストラクタが、1つ以上の複数の引数を許容することが記述された関数を与えられる場合、呼ぶまでは評価される余分な引数は、関数によって無視されます。 しかしながら、実装は、余分な引数の存在について単に述部であるTypeError例外を投げる(スローする)ことなく、このような動作と同じ length (一般的に取るべき引数の数を示すプロパティ)の引数と関連する実装固有の動作を定義する場合があります。 [注釈] 組み込み関数の設定における付加的な機能を追加する実装においては、既存の関数に新たなパラメータを追加するのではなく、新たな関数を追加することによってそうすることが推奨されます。 各組み込み関数と組み込みコンストラクタには、その内部プロパティ[[Prototype]]の値として式 Function.prototype (15.3.4) という初期値を持つFunctionプロトタイプオブジェクトがあります。 特段の記述がない限り、各組み込みプロトタイプオブジェクトには、そのオブジェクト型プロトタイプオブジェクトを除き、その内部プロパティ[[Prototype]]の値として式 Object.prototype (15.2.4)の初期値であるObject型のプロトタイプオブジェクトがあります。 この項で説明した組み込み関数の注釈としては、コンストラクタは、特定の関数の説明に記述されない限り、内部メソッド[[Construct]]を実装することはありません。 この項で説明した組み込み関数の注釈としては、コンストラクタは、特定の関数の説明に記述されない限り、prototypeプロパティを持ちます。 この項では、コンストラクタが「関数として呼ばれる場合」と「 new 式の一部として呼ばれる場合」で異なる動作について一般的な説明をします。 「関数として呼ばれる場合」は、コンストラクタの内部メソッド[[Call]]の呼び出しと一致する動作をし、「 new 式の一部として呼ばれる場合」には、コンストラクタの内部メソッド[[Construct]]の呼び出しと一致する動作をします。 この項の中で説明したコンストラクタ、通常の関数、または両方である各組み込みFunctionオブジェクトは、値が整数であるlengthプロパティを持っています。 特段の記述がない限り、この値は、オプションのパラメータを含んでいる場合、関数概要における節の見出しで表示した名前付き引数の最大値と同等です。 [注釈] 例えば、Stringプロトタイプオブジェクトの slice プロパティの初期値であるFunctionオブジェクトは、節の見出しであり、2つの名前付き引数 start と endを表示する"String.prototype.slice (start, end)"の下で説明されるので、よってFunctionオブジェクトにおける length プロパティの値は、2 になります。
状況に応じてこの項で説明した組み込みFunctionオブジェクトの length プロパティは、属性 { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false } を持ちます。 この項で説明した他のプロパティのそれぞれは、特段の記述がない限り、属性 { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true } を持ちます。