Когда речь идет о разработке крупных приложений, необходимо понимать, что такое пространство имен в 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;
}
}
Читайте также: Что лучше масштабируется: JavaScript фреймворки или нативный язык.
Пространство имен в JavaScript: модульный подход
Вот тут-то мы и подошли к самому интересному! Этот код не представляет собой ничего сложного, а «();» представляет собой самовызывающейся функцией.
let webApp = (function() {
let id= 0;
return {
next: function() {
return id++;
}, reset: function() {
id = 0;
}
};
})();
Так почему же модульный подход является наиболее действенным способом соблюдать пространство имен в js. Все дело в присвоении свойств, без использования поддерживающей логики. Кроме того, все свойства должны быть инициализированы и не могут легко ссылаться друг на друга. Такой вариант не имеет подобных ограничений и обеспечивает дополнительное преимущество конфиденциальности имен.
Заключение
Использование модульного подхода, чтобы соблюдать пространство имен в JavaScript, является гибким для больших проектов. В отличие от него, объектный подход лучше подходит для мини-проектов и аддонов меньшей сложности. Более подробно об этом в своём блоге пишет Ангус Кролл (Angus Croll).