
В начале своего пути в сфере веб-разработки новички часто сталкиваются с непониманием такого термина, как пространство имен в JavaScript. На самом деле не все так страшно, как кажется на первый взгляд.
Что такое пространство имен в JavaScript
В процессе создания приложения оно растет и усложняется с каждым этапом. И вполне вероятно, что в какой-то момент случиться так, что в нем появятся переменные или функции с одинаковыми именами. Это особенно актуально, когда над проектом работает несколько человек. Это, конечно же, приведет к конфликту.
Чтобы избежать этого, мы можем использовать пространства имен в js для создания локальной области видимости для наших переменных и функций. Тут стоит отметить, что JavaScript на самом деле не имеет пространств имен в отличие от того, как это реализовано в других языках программирования. Поэтому речь пойдет о существующих альтернативных способов достижения того же результата. Наиболее распространенный способ моделирования пространств имен в JavaScript — использование объектов.
Прямое присвоение
Тут необходимо сразу же обратить внимание но то, что имена «id» или «next» являются общими именами. Он могут многократно встречаться в приложении. Не стоит добавлять большое количество слов к переменным для использования их в глобальной области видимости без конфликтов. Например, «idOfwebApp». Лучше поместить их внутрь объекта, который будет содержать всю информацию о текущем приложении.
let webApp = {}; webApp.id = 0; webApp.next = function() { return webApp.id++; } webApp.reset = function() { webApp.id = 0; }
Давайте разберем приведенный выше код для этого примера. Если внимательно посмотреть, что здесь происходит, то можно увидеть, что здесь имеется объект, имеющий ключ с именем id и двумя функциями.
Если мы напишем, то это может стать заменой вместо использования длинных имен.
console.log(webApp.next()); // Получаем 0
Использование объектной литеральной нотации
Это самый распространенный подход использовать пространство имен в JavaScript.
let webApp = { id: 0, next: function() { return this.id++; }, reset: function() { this.id = 0; } }
Модульный подход
Вот тут-то мы и подошли к самому интересному! Этот код не представляет собой ничего сложного, а «();» представляет собой самовызывающейся функцией.
let webApp = (function() { let id= 0; return { next: function() { return id++; }, reset: function() { id = 0; } }; })();
Так почему же модульный подход является наиболее действенным способом соблюдать пространство имен в js. Все дело в присвоении свойств, без использования поддерживающей логики. Кроме того, все свойства должны быть инициализированы и не могут легко ссылаться друг на друга. Такой вариант не имеет подобных ограничений и обеспечивает дополнительное преимущество конфиденциальности имен.
Заключение
Использование модульного подхода, чтобы соблюдать пространство имен в JavaScript, является гибким для больших проектов. В отличие от него, объектный подход лучше подходит для мини-проектов и аддонов меньшей сложности.