Как мы поняли из предыдущего видео,
значение this зависит от нескольких факторов.
Во-первых, от типа участка кода.
Давайте разберемся поподробней.
Если мы обратимся к полю innerwidth, находясь в браузере,
то мы получим некоторое значение, например, 1280.
Это значение равно ширине окна браузера.
Тот же самый эффект мы получим,
если обратимся к innerwidth у глобального объекта, у window.
Если мы находимся в Node.js и интерпретируем наш код с помощью Node,
обращаясь к полю process version, мы получаем некоторую строку,
равную текущей версии нашего интерпретатора.
То же самое значение мы получим, если позовем process version у объекта Global.
Многие из вас наверняка уже пользовались консоль-логом для того чтобы выводить на
консоль некоторые значения.
Но немногие задумывались о том,
что мы вызываем свойство console у глобального объекта.
Тот же самый эффект мы получаем, если вызовем console.log у this.
А во всех предыдущих примерах this равен глобальному объекту.
Помимо глобального участка кода мы можем описать наш код в рамках Node.js модуля.
Для этого создадим новый файл, например, year-2016,
в рамках которого мы будем описывать свойства 2016 года.
Для того чтобы наши свойства стали доступны извне модуля,
мы должны их экспортировать.
То есть положить свойства в объект module exports.
Чтобы сократить нашу запись, мы можем класть свойства в ключевое слово this.
Это аналог module.exports, и обе эти записи работают одинаково.
Для того чтобы использовать свойства извне нашего модуля, например,
в файле index.js, мы должны первым делом импортировать наш модуль.
Делаем это при помощи вызова функции require.
На вход функции мы передаем путь нашего модуля, а в результате получаем
некоторый объект, тот самый объект, который мы экспортировали из модуля.
После этого, обращаясь к свойствам этого объекта, мы получаем нужные нам значения.
В этом видео мы рассмотрели с вами,
чему равен this в глобальном участке кода и в Node.js модуле.