Что такое пространство имен?
Расстановка имен – это действие, заключающее набор сущностей, переменных, функций, объектов в единый зонтичный термин.
В 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')
}Но они по-прежнему доступны извне, благодаря ссылке на объект автомобиля.
Лучший способ полностью скрыть код от посторонних глаз – завернуть его в блок, который представляет собой часть кода, завернутую в фигурные скобки, как блок 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 недоступны извне, даже если start присвоена переменной, определенной через var.
Оригинал: “https://flaviocopes.com/javascript-namespaces/”