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

Сообщение от B~Vladi
А внешний [[scope]], который хранит функция fnc2 - это клон или ссылка
Ссылка; там же, в статье о замыканиях можно подробно посмотреть.

Сообщение от B~Vladi
или ссылка на [[scope]] функции fnc1?!
Свойство [[Scope]] функции - это ссылка на Scope (Scope chain) порождающего (внешнего) контекста, а не на [[Scope]] внешней функции. Если бы была ссылка на [[Scope]] внешней функции, внутренняя функция не видела бы переменные, объявленные во внешней функции.

Т.е.

f1.[[Scope]] === Scope глобальньного контекста === [Global]


Scope (Scope chain) контекста функции f1 === Объект активации (AO) контекста функции f1 + f1.[[Scope]]:

Scope(f1 Context) == AO(f1 context) + f1.[[Scope]]


А f2.[[Scope]]:

f2.[[Scope]] === Scope(f1 Context) === [AO(f1 context), Global]
__________________
Тонкости ECMAScript

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