I Shar

I Shar

мир глазами веб-разработчика

JavaScript: Пространства имен

для чего нужны пространства имен в JavaScript

I Shar

время чтения 2 мин.

Photo by Mika Korhonen on Unsplash

Что такое пространство имен?

Пространство имен (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.


Спасибо за внимание.

    • frontend
    • js

Новые публикации

Далее

Категории

О нас

Frontend & Backend. Статьи, обзоры, заметки, код, уроки.