訳の正確性を保証するものではありませんので必要に応じて原文であるEcma InternationalのECMA-262にある ECMA-262.pdf ( ECMA-262 5.1 Edition )を参照下さい。
訳:2012年04月 webzoit.net
【構文】 MemberExpression : PrimaryExpression FunctionExpression MemberExpression [ Expression ] MemberExpression .IdentifierName new MemberExpression Arguments NewExpression : MemberExpression new NewExpression CallExpression : MemberExpression Arguments CallExpression Arguments CallExpression [ Expression ] CallExpression . IdentifierName Arguments : () ( ArgumentList ) ArgumentList : AssignmentExpression ArgumentList , AssignmentExpression LeftHandSideExpression : NewExpression CallExpression
プロパティは、何れかのドット記法を使って、
MemberExpression .IdentifierName CallExpression .IdentifierName
または、ブラケット記法を使って
MemberExpression [ Expression ] CallExpression [ Expression ]
名称でアクセスされます。
ドット記法は、次の構文変換によって説明されます。
MemberExpression .IdentifierName
は、
MemberExpression [ <identifier-name-string> ]
とその振る舞いが同じであり、また、似たようなものとして
CallExpression .IdentifierName
は、
CallExpression [ <identifier-name-string> ]
とその振る舞いが同じで
<identifier-name-string>
は、IdentifierNameとしてUnicodeエスケープシーケンス処理の後に来る同じ文字の並びを含む文字列リテラルです。 プロダクション
MemberExpression : MemberExpression [ Expression ]
は、次のように評価されます。
1. baseReference は、MemberExpressionを評価した結果とする 2. baseValue は、GetValue(baseReference) とする 3. propertyNameReference は、Expressionを評価した結果とする 4. propertyNameValue は、 GetValue(propertyNameReference) とする 5. CheckObjectCoercible(baseValue) を呼ぶ 6. propertyNameString は、 ToString(propertyNameValue) とする 7.評価中の構文上のプロダクションがstrict(厳格)モードのコード内に含まれる場合、 strict は、true、それ以外は、 strict は、false 8.基準値がbaseValue、参照名がpropertyNameString、strict(厳格)モードフラグがstrictであるReference型の値を返す
プロダクション
CallExpression : CallExpression [ Expression ]
は、ステップ1で評価されるCallExpressionを含む場合を除き、全く同じ方法で評価されます。
プロダクション
NewExpression : new NewExpression
は、次のように評価されます。
1. ref は、NewExpressionを評価した結果とする 2. constructor は、 GetValue(ref) とする 3. Type(constructor) が、Objectでない場合には、TypeError例外を投げる(スローする) 4. constructor が[[Construct]]内部メソッドを実装しない場合には、TypeError例外を投げる(スローする) 5. 引数を何も渡さず(引数のリストがカラのまま)constructor における[[Construct]]内部メソッドを呼んだ結果を返す
プロダクション
MemberExpression : new MemberExpression Arguments
は、次のように評価されます。
1. ref は、MemberExpressionを評価した結果とする 2. constructor は、 GetValue(ref) とする 3. argList は、引数値の内部リスト(11.2.4)を生成中にArgumentsを評価した結果とする 4. Type(constructor) が、Objectではない場合、TypeError例外を投げる(スローする) 5. constructor が、[[Construct]]内部メソッドを実行しない場合、TypeError例外を投げる(スローする) 6. 引数の値としてリスト argList を渡し、constructor における[[Construct]]内部メソッドを呼んだ結果を返す
プロダクション
CallExpression : MemberExpression Arguments
は、次のように評価されます。
1. ref は、MemberExpressionを評価した結果とする 2. func は、GetValue(ref) とする 3. argList は、Argumentsを評価した結果とし、引数の値の内部リストを生成 ( 11.2.4 参照 ) 4. Type(func) がObjectではない場合、TypeError例外を投げる(スローする) 5. IsCallable(func) が、falseである場合、TypeError例外を投げる(スローする) 6. Type(ref) が、Referenceである場合、 a. IsPropertyReference(ref) が trueである場合、 i. thisValue は、 GetBase(ref) とする b. それ以外の場合で ref の基準が、環境レコードである場合、 i. thisValue は、 GetBase(ref) の具体的なメソッド ImplicitThisValue を呼んだ結果とする 7.それ以外の場合で Type(ref) がReferenceではない場合、 a. thisValue は、undefinedとする 8.引数の値であるリスト argList 、this 値としてthisValue を渡し、 func における[[Call]]内部メソッドを呼んだ結果を返す
プロダクション
CallExpression : CallExpression Arguments
は、ステップ1で評価されるCallExpressionを含む場合を除き、全く同じ方法で評価されます。 [注釈] 返した結果は、 func が、ネイティブなECMAScriptオブジェクである場合、Reference型となることは決してありません。 ホストオブジェクトを呼ぶ場合は常に実装依存であるReference型の値を返すことができます。 Reference型の値が返される場合、非strict(厳格)なProperty Reference(プロパティ参照)にしなければいけません。
引数リストの評価は、値のリストを生成します( 8.8 参照)。 プロダクション
Arguments : ( )
は、次のように評価されます。
1.カラのListを返す
プロダクション
Arguments : ( ArgumentList )
は、次のように評価されます。
1.ArgumentListを評価した結果を返す
プロダクション
ArgumentList : AssignmentExpression
は、次のように評価されます。
1. ref は、AssignmentExpressionを評価した結果とする 2. arg は、 GetValue(ref) とする 3.唯一のアイテムが、 arg であるListを返す
プロダクション
ArgumentList : ArgumentList , AssignmentExpression
は、次のように評価されます。
1. precedingArgs は、ArgumentListを評価した結果とする 2. ref は、AssignmentExpressionを評価した結果とする 3. arg は、 GetValue(ref) とする 4. precedingArgs の長さより長く、新たなリストの最後のアイテムである arg によって末尾に続くことにより、precedingArgs のアイテムであるアイテムを持つ List を返す
プロダクション
MemberExpression : FunctionExpression
は、次のように評価されます。
1. FunctionExpression を評価した結果を返す