Сообщение от Riim
|
т. е. сначала создается ReferenceType для obj, а потом второй ReferenceType для m из obj.m , при этом для создания второго ReferenceType нужно вызвать GetValue у первого?
|
Давай посмотрим алгоритм:
MemberExpression . Identifier
// получаем значение Reference Type для MemberExpression
1. Evaluate MemberExpression.
// получаем значение Result(1)
2. Call GetValue(Result(1)).
// вычисляем выражение для Expression,
// в нашем случае - для Identifier
// это может быть просто строка,
// идентификатор, который преобразуется
// в строку или выражение
3. Evaluate Expression.
// получаем значение, если у нас просто
// строка - она и вернётся из GetValue
4. Call GetValue(Result(3)).
// преобразование к объекту значения MemberExpression
5. Call ToObject(Result(2)).
// преобразование к строке значения Identifier
// в нашем случае ничего не меняется
6. Call ToString(Result(4)).
// возвращаем новое значение типа Reference
// c базой MemberExpression и именем свойства Identifier
// с учётом предыдущих преобразований
7. Return a value of type Reference whose base object is Result(5) and whose property name is
Result(6).
Сообщение от Zeroglif
|
(про скобки и функции хоста опускаю)
|
А что там за случаи?