JavaScript: Пространства имен
для чего нужны пространства имен в JavaScript
Что такое пространство имен?
Пространство имен (namespace) - это объединение набора сущностей, переменных, функций, объектов в пределах установленного абстрактного хранилища.
В JavaScript есть несколько способов создания пространства имен. Приведенные ниже примеры позволят лучше понять эту концепцию.
Простейший способ создания пространства имен - использование объектных литералов:
const car = {
start: () => {
console.log('start')
},
stop: () => {
console.log('stop')
}
}
В этом примере start
и stop
попадают в пространство имен car
: car.start()
и car.stop()
. Таким образом, они не относятся напрямую к глобальному объекту.
Почему это важно? Одна из причин - отсутствие возможности изменить сущности пространства имен непосредственно из вне.
Но, говоря о пространстве имен, мы можем так же задавать новые переменные уже после создания объекта:
const car = {}
car.start = () => {
console.log('start')
}
car.stop = () => {
console.log('stop')
}
Такие переменные все-таки будут доступны снаружи через объект car
.
Лучший способ полностью скрыть код - использование обертки в виде фигурных скобок. Это похоже на фигурные скобки, используемые в конструкциях if
или for
:
{
const start = () => {
console.log('start')
}
const stop = () => {
console.log('stop')
}
}
Следует обратить внимание на то, что такой метод работает только для let
и const
.
Если Вы используете var
, код по-прежнему будет виден снаружи.
В таких случаях следует использовать “старый” (pre let/const) синтаксис:
(function() {
var start = () => {
console.log('start')
}
const stop = () => {
console.log('stop')
}
})()
Теперь функции start
и stop
недоступны снаружи, даже при использовании конструкции var
для start
.
Спасибо за внимание.