Показать сообщение отдельно
  #20 (permalink)  
Старый 07.11.2009, 12:42
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от 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
(про скобки и функции хоста опускаю)
А что там за случаи?
__________________
Тонкости ECMAScript

Последний раз редактировалось Dmitry A. Soshnikov, 07.11.2009 в 12:45.
Ответить с цитированием