Давайте посмотрим, какое пространство имен – это когда дело доходит до создания приложений JavaScript, а некоторые преимущества от использования частного пространства имен при создании ваших приложений.
Обратите внимание, что эта статья ссылается на анонимные функции самоисполнения. Если вы не знаете о том, что это так, пожалуйста, прочитайте эту отличную статью Noah Stokes: Самоисполнение анонимных функций или как написать чистый JavaScript . Эта статья будет в подробности о анонимных функциях самоиполнения.
Что такое пространство имен?
Чтобы проложить это просто, пространство имен – это просто раздел кода, который имеет свое место. Когда вы сначала начните писать приложения JS, вы обычно просто вводите код и запустите его. Это ставит весь код в то, что известен как Глобальное пространство имен , который содержит весь код для окна, в котором вы работаете.
Если вы держите весь свой код в Глобальное пространство имен Однако, вы можете столкнуться с проблемами с столкновениями, соглашениями о именах и др. Особенно в больших приложениях/играх JS.
Давайте посмотрим на пример того, как использовать только Глобальное пространство имен Развивать игру – плохая идея.
Итак, скажем, у нас есть игра, которая следит за отслеживанием точек, которые у игрока есть:
var points = 0;
Многие игры отслеживают точки, чтобы добавить конкурентное преимущество в игру. Просто наведя эту линию в сценарий, мы создали переменную с именем очки которые могут отслеживать точки, полученные пользователем.
И это все хорошо и хорошо, но скажем, что у нас есть более продвинутый пользователь, играющий в игру. Этот пользователь знает, как посмотреть на источник веб-страницы, и поэтому этот человек заглядывает на источник за игру JS и понимает, что очки Переменная просто сидит там в Глобальное пространство имен Отказ Злая ухмыляющая спускается по их лице, когда они созерцают очки, которые они могут достичь! Они решают, что они не хотят ждать, чтобы победить некоторые взгляды или разбить некоторые грибы, или что у вас, чтобы взять кучу очков. Они хотят их очки сейчас! Ну, как делает четырехлистный миллиард миллиардов Очки звучат?! Итак, они загружают консоль в своем любимом браузере и просто введите в консоль:
points = 34750925489459203859095480917458059034;
Как только пользователь попадает в Enter, очки Переменная обновляется в игре. Теперь у пользователя есть по-настоящему огромное, и, вероятно, нереально, количество очков в игре, и он может похвастаться своим друзьям, что никто не может побить его потрясающую оценку.
Итак, как мы предотвратим этому? Это где Частные пространства имен вступают в игру.
Частные пространства имен
Частные пространства имен Разрешить разработчикам поставить свой код в разделы (или пространства имен ). Эти разделы работают независимо друг от друга, но все еще могут читать и писать из Глобальное пространство имен .
Чтобы разбить это в более простые термины из реального сценария, скажем, вы работаете в офисном здании. У вас есть свой офис, и вы видите других со своими собственными офисами. Каждый офис заблокирован, и только человек, который принадлежит в офисе, имеет ключ к этому офису. Также скажу, что у вас есть какой-то тип нового Super Lock, который делает ваш офис непроницаемым любым другим человеком в здании. Давайте рассмотрим самостоятельное здание как Глобальное пространство имен и каждый офис как Частное пространство имен . У вас нет доступа к кому-либо другому офису, и у них нет доступа к вашим. Но каждый из вас имеет доступ к остальной части офисного здания, будь то кофе, захватывая закуску и т. Д. Каждый из вас может схватить что-то из Глобальное пространство имен (или создать/изменить что-то там), но вы не можете создавать/изменять/захватить что-либо друг от друга; Вы можете создавать/изменить/схватить свои собственные Частное пространство имен /офис.
Достижение частного пространства имен
Итак, как мы достигаем этого Частное пространство имен в JavaScript? Используйте анонимную функцию самоиполнения! Если вы не прочитали статью Noah Stokes, Саморегулирующие анонимные функции или как написать чистый JavaScript Пожалуйста, сделайте это сейчас. Эта статья будет в подробности о анонимных функциях самоиполнения.
Давайте посмотрим на использование этого очки переменная с ранее, но давайте отделим ее в Частное пространство имен :
//The most common way you'll see an anonymous self-executing function
(function () {
var points = 0;
})();
//This is just one of many more alternative ways to use an anonymous self-executing function
/*
!function () {
var points = 0;
}();
*/Теперь, когда пользователь доходит до страницы, они не смогут открыть консоль в своем браузере и изменить значение переменной точек, как они пожелают! Потрясающие!
Пространство имен и взаимодействие документов
Приведенный выше код был, но одним использованием для использования анонимной функции самоисполнения, чтобы дать код своей Частное пространство имен Отказ Имейте в виду, что пространства имен влияют только на код JS (переменные/массивы/объекты/и т. Д.), Не код, который относится к самому документу.
Любой код в пространстве имен по-прежнему имеет тот же доступ к документу HTML, а CSS, как обычно в Глобальное пространство имен Отказ Посмотрите на следующие два образца кода. Они оба выполняют ту же функциональность, и ни одна не выгодно, либо более эффективна, чем другой.
такой же как:
Имейте в виду, что это всего один из способов использования пространств имен в приложениях JavaScript. Адаптируйте свой код к тому, что лучше всего подходит для ситуации под рукой.
Оригинал: “https://www.freecodecamp.org/news/how-to-use-anonymous-functions-for-private-namespacing-in-your-javascript-apps/”