Показать сообщение отдельно
  #6 (permalink)  
Старый 13.11.2017, 07:04
Аспирант
Отправить личное сообщение для iamme Посмотреть профиль Найти все сообщения от iamme
 
Регистрация: 02.09.2011
Сообщений: 46

Сообщение от Lion777 Посмотреть сообщение
к твоему user
var user = {
  userName: 'Василий',
  display: function() {
    alert(user.userName);
  }
}
user.display();
лексическое окружение есть у области видимости, а не объекта, так? Это то, что создается при запуске функции. userName относится к структуре user, да, но не к лексическому окружению user.

Все переменные и параметры функций являются свойствами объекта переменных LexicalEnvironment. Каждый запуск функции создает новый такой объект. На верхнем уровне им является «глобальный объект», в браузере – window.
При создании функция получает системное свойство [[Scope]], которое ссылается на LexicalEnvironment, в котором она была создана.
При вызове функции, куда бы её ни передали в коде – она будет искать переменные сначала у себя, а затем во внешних LexicalEnvironment с места своего «рождения».
Ответить с цитированием