訳の正確性を保証するものではありませんので必要に応じて原文であるEcma InternationalのECMA-262にある ECMA-262.pdf ( ECMA-262 5.1 Edition )を参照下さい。
訳:2012年04月 webzoit.net
Arrayが、new 式の一部として呼ばれる際には、それはコンストラクタであり、新たに生成したオブジェクトを初期化します。
Array コンストラクタが、引数が全くないか、少なくとも2つの引数を伴う場合、この説明が適用されます。 新たに構築したオブジェクトの内部プロパティ[[Prototype]]には、 Array.prototype (15.4.3.1)の初期値であるオリジナルの Array プロトタイプオブジェクトが設定されます。 新たに構築したオブジェクトの内部プロパティ[[Class]]には、"Array"が設定されます。 新たに構築したオブジェクトの内部プロパティ[[Extensible]]には、trueが設定されます。 新たに構築したオブジェクトのlengthプロパティには、引数の数が設定されます。 新たに構築したオブジェクトのプロパティ 0 には、(提供された場合) item0 、新たに構築したオブジェクトのプロパティ 1 には、(提供された場合) item1 が設定され、一般的には、複数の引数が存在するものとして、1つめの引数が、引数番号 0 となると考えられる場合には、新たに構築したオブジェクトのプロパティ k には、引数 k が設定されます。 これらのプロパティの全ては、属性 {[[Writable]]: true, [[Enumerable]]: true, [[Configurable]]: true} を持ちます。
新たに構築したオブジェクトの内部プロパティ[[Prototype]]には、 Array.prototype (15.4.3.1)の初期値であるオリジナルのArrayプロトタイプオブジェクトが設定されます。 新たに構築したオブジェクトの内部プロパティ[[Class]]には、"Array"が設定されます。 新たに構築したオブジェクトの内部プロパティ[[Extensible]]には、trueが設定されます。 引数 lenが、 len と等しい Number であり、 ToUint32(len) (が、真)である場合、新たに構築したオブジェクトのlengthプロパティには、ToUint32(len)が設定されます。 引数 lenが、 len と等しくない Number であり、 ToUint32(len) (が、真)である場合、RangeError例外が投げられます(スローされます)。 引数 lenが、Numberではない場合、新たに構築したオブジェクトのlengthプロパティには、1が、新たに構築したオブジェクトのプロパティ 0 には、属性 {[[Writable]]: true, [[Enumerable]]: true, [[Configurable]]: true} を伴う len が設定されます。