Глобальные объекты
Цель
Рассотрим понятиt "глобальный объект" по отношению к Node.js
Предварительныетребования
Знание основ JavaScript.
Установить Node.js и npm
Умение работать с модулями Node.js
Что относится к глобальным объектам
В JavaScript переменные и функции, объявленные во внешней области видимости является свойствами глобального объекта, в браузере этот объект явно доступен под именем window
. Это означает, что в JavaScript var something
определит новую глобальную переменную. В Node.js все по-другому. Переменные и функции определенные во внешняя области видимости не являются глобальными переменными, var something
внутри модуля Node.js будет локальной для этого модуля и не будет видна из других модулей.
Для того, чтобы переменная стала глобальной, ее необходимо определить, как свойство объекта global. Например
global.text = 'Text';
Теперь обратившись из любого модуля к global.text
мы получим его значение.
Кроме объекта global глобальными также являются следующие объекты и классы:
- класс Buffer используется для обработки двоичных данных;
- console используется для печати на stdout и stderr;
- process предоставляет информацию о текущем процессе Node.js и контролирует его
Также есть переменные, которые похоже на глобальные, но таковыми не являются. Они просто встроены в каждый модуль и существуют только в рамках этого модуля:
- __dirname - возвращает абсолютный путь к директории, где содержится модуль;
- __filename - возвращает абсолютный путь к файлу модуля;
- exports - ссылка на module.exports, является его сокращенной записью;
- module - ссылка на текущий модуль;
- require() - функция для подключения модуля;
Практическое задание
Дополните класс Person, созданный в задании из главы Работа с модулями в Node.js, городом, где проживает пользователь. При этом если город не был передан, то он должен браться с глобальной переменной 'city'. Допишите информацию, которую выводит метод show() с использованием нового параметра.
В файле index.js
добавьте инициализацию переменной 'city '.