訳の正確性を保証するものではありませんので必要に応じて原文であるEcma InternationalのECMA-262にある ECMA-262.pdf ( ECMA-262 5.1 Edition )を参照下さい。
訳:2012年04月 webzoit.net
Objectコンストラクタの内部プロパティ[[Prototype]]は、標準組み込みFunctionプロトタイプオブジェクトです。 更に内部プロパティと(値が1である) length プロパティの他にObjectコンストラクタは、次のプロパティを持ちます。
Object.prototype の初期値は、標準組み込みObjectプロトタイプオブジェクト(15.2.4)です。 このプロパティは、属性 {[[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false } を持ちます。
getPrototypeOf 関数は、引数 0を伴って呼ばれ、次のステップを取ります。
1. Type(O) が、 Objectではない場合、TypeError例外を投げる(スローする) 2. Oから成る内部プロパティ[[Prototype]]の値を返す
getOwnPropertyDescriptor関数が呼ばれる際には、次のステップを取ります。
1. Type(O) が、 Objectではない場合、TypeError例外を投げる(スローする) 2. name は、 ToString(P) とする 3. desc は、引数 nameを伴うOから成る内部プロパティ[[GetOwnProperty]]を呼んだ結果とする 4. FromPropertyDescriptor(desc) (8.10.4)を呼んだ結果を返す
getOwnPropertyNames関数が呼ばれる際には、次のステップが取られます。
1. Type(O) が、 Objectではない場合、TypeError例外を投げる(スローする) 2. array は、Arrayが、その名称を伴う標準組み込みコンストラクタである場合に式 new Array () によるかのように新たなオブジェクトを生成した結果とする 3. n は、 0 とする 4. OのプロパティP自身に名前付けしたそれぞれにおいて a. name は、P の名称であるString値とする b.引数 ToString(n)、プロパティ記述子 {[[Value]]: name, [[Writable]]: true, [[Enumerable]]: true, [[Configurable]]: true}、 falseを伴う array の内部メソッド[[DefineOwnProperty]]を呼ぶ c. n を1で増分する 5. array を返す
[注釈] O が、Stringのインスタンスである場合、オブジェクトの[[PrimitiveValue]]の文字列内の文字位置と一致する 15.5.5.2 で定義した暗黙のプロパティを含めステップ4で処理したプロパティ自身を設定します。
create関数は、指定したプロトタイプを伴って新たなオブジェクトを生成します。 create関数が呼ばれる際には、次のステップが取られます。
1. Type(O) が、Object や Nullではない場合、TypeError例外を投げる(スローする) 2. obj は、その名を持つ標準組み込みコンストラクタであるObjectを式 new Object() によるかのように新たに生成した結果とする 3. obj の内部プロパティ[[Prototype]]に0を設定 4.引数 Propertiesが、存在する場合、且つundefinedではない場合、 obj と Properties を伴う標準組み込み関数 Object.defineProperties を呼んだかのように自身のプロパティに obj を追加 5. obj を返す
defineProperty関数は、自身のプロパティを追加、または存在するオブジェクト自身のプロパティから成る属性を更新の両方または何れかの為に使用されます。 defineProperty関数が呼ばれる際には、次のステップが取られます。
1. Type(O) が、Objectではない場合、TypeError例外を投げる(スローする) 2. name は、 ToString(P) とする 3. desc は、引数として Attributes を伴うToPropertyDescriptorを呼んだ結果とする 4.引数 name、desc、trueを伴う内部メソッド[[DefineOwnProperty]]を呼ぶ 5. O を返す
defineProperties関数は、自身のプロパティを追加、または存在するオブジェクト自身のプロパティから成る属性を更新の両方または何れかの為に使用されます。 defineProperties関数が呼ばれる際には、次のステップが取られます。
1. Type(O) が、Objectではない場合、TypeError例外を投げる(スローする) 2. props は、 ToObject(Properties) とする 3. names は、 props 自身のプロパティを列挙するごとの名前を含んだ内部リストとする 4. descriptors はカラの内部リストとする 5.リスト順の名称から成る要素 P ごとに a. descObj は、引数として P を伴う props の内部メソッド[[Get]]を呼んだ結果とする b. desc は、引数として descObj を伴うToPropertyDescriptorを呼んだ結果とする c.記述子の終わりに P と desc から成る(2つの要素Listの)ペアを付加する 6.リスト順に記述子から成るペアごとに a. P は、ペアの1つめの要素とする b. desc は、ペアの2つめの要素とする c.引数 P、desc、trueを伴う O の内部メソッド[[DefineOwnProperty]]を呼ぶ 7. O を返す
実装が、 for-in 文における仕様上の列挙順を定義する場合、その同一の列挙順は、このアルゴリズムのステップ3にあるリストの要素順に使用されなければいけません。
seal関数が呼ばれる際には、次のステップが取られます。
1. Type(O) が、Objectではない場合、TypeError例外を投げる(スローする) 2. O のプロパティ名 P 自身に名前を付けるごとに a. desc は、 P を伴う O の内部メソッド[[GetOwnProperty]]を呼んだ結果とする b. desc.[[Configurable]] が、 trueである場合、 desc.[[Configurable]] にfalseを設定 c.引数として P 、desc、trueを伴う O の内部メソッド[[DefineOwnProperty]]を呼ぶ 3. O の内部プロパティ[[Extensible]]にfalseを設定 4. Oを返す
freeze関数が呼ばれる際には、次のステップが取られます。
1. Type(O) が、Objectではない場合、TypeError例外を投げる(スローする) 2. O のプロパティ名 P 自身に名前を付けるごとに a. desc は、 P を伴う O の内部メソッド[[GetOwnProperty]]を呼んだ結果とする b. IsDataDescriptor(desc) が、 trueである場合、 i. desc.[[Writable]] が、 trueである場合、desc.[[Writable]]に falseを設定 c. desc.[[Configurable]]が、 trueである場合、desc.[[Configurable]]に falseを設定 d.引数として P 、 desc、 trueを伴う O の内部メソッド[[DefineOwnProperty]]を呼ぶ 3. O の内部プロパティ[[Extensible]]に falseを設定 4. O を返す
preventExtensions関数が呼ばれる際には、次のステップが取られます。
1. Type(O) が、Objectではない場合、TypeError例外を投げる(スローする) 2. O の内部プロパティ[[Extensible]]に falseを設定 3. O を返す
isSealed関数が、引数 O を伴って呼ばれる際には、次のステップが取られます。
1. Type(O) が、Objectではない場合、TypeError例外を投げる(スローする) 2. O のプロパティ名 P 自身に名前を付けるごとに a. desc は、 P を伴う O の内部メソッド[[GetOwnProperty]]を呼んだ結果とする b. desc.[[Configurable]]が、trueである場合、falseを返す 3. O の内部プロパティ[[Extensible]]が、falseである場合、trueを返す 4.それ以外の場合、falseを返す
isFrozen関数が、引数 Oを伴って呼ばれる際には、次のステップが取られます。
1. Type(O) が、Objectではない場合、TypeError例外を投げる(スローする) 2. O のプロパティ名 P 自身に名前を付けるごとに a. desc は、 P を伴う O の内部メソッド[[GetOwnProperty]]を呼んだ結果とする b. IsDataDescriptor(desc) が、 trueである場合、 i. desc.[[Writable]] が、 trueである場合、falseを返す c. desc.[[Configurable]] が、 trueである場合、falseを返す 3. O の内部プロパティ[[Extensible]]が、falseである場合、trueを返す 4.それ以外の場合、falseを返す
isExtensible関数が、引数 Oを伴って呼ばれる際には、次のステップが取られます。
1. Type(O) が、Objectではない場合、TypeError例外を投げる(スローする) 2. O の内部プロパティ[[Extensible]]のBoolean値を返す
keys関数が、引数 Oを伴って呼ばれる際には、次のステップが取られます。
1. Type(O) が、Objectではない場合、TypeError例外を投げる(スローする) 2. n は、、O の列挙プロパティ自身の数とする 3. array は、その名の標準組み込みコンストラクタである Array を式 new Array(n) によるかのように新たなObjectを生成した結果とする 4. index は、 0とする 5.名称文字列が、 P である O から成る自身の列挙プロパティごとに a.引数 ToString(index)、プロパティ記述子 {[[Value]]: P, [[Writable]]: true, [[Enumerable]]: true, [[Configurable]]: true}、false.を伴う array の内部メソッド[[DefineOwnProperty]]を呼ぶ b. index を1で増分する 6. array を返す
実装が、 for-in 文における仕様上の列挙順を定義する場合、同一の列挙順が、このアルゴリズムのステップ5の中で使用されなければいけません。