Сообщение от Lion777
|
к твоему user
var user = {
userName: 'Василий',
display: function() {
alert(user.userName);
}
}
user.display();
|
лексическое окружение есть у области видимости, а не объекта, так? Это то, что создается при запуске функции. userName относится к структуре user, да, но не к лексическому окружению user.
Все переменные и параметры функций являются свойствами объекта переменных LexicalEnvironment. Каждый запуск функции создает новый такой объект. На верхнем уровне им является «глобальный объект», в браузере – window.
При создании функция получает системное свойство [[Scope]], которое ссылается на LexicalEnvironment, в котором она была создана.
При вызове функции, куда бы её ни передали в коде – она будет искать переменные сначала у себя, а затем во внешних LexicalEnvironment с места своего «рождения».