У меня есть пара переменных в моем приложении, которые я должен использовать в большинстве своих закрытий, например, переменные, содержащие предварительно загруженные запросы, или переменные, содержащие текущее состояние приложения (которые необходимо динамически изменять в разных места).Шаблон для глобальных переменных
Так моя структура приложения выглядит следующим образом:
(function() {
var MainModule = (function() {
})();
var Utils = (function() {
})();
var Events = (function() {
})();
})();
И я создаю эти переменные внутри MainModule
, но хотите изменить их, удалить их и т.д., внутри Utils
и Events
. Я думал о двух способах:
- Создание
Context
замыкания, которое хранит массив этих переменные, и имеюget()
иset()
методы доступа. - Передача этих переменных в замыкания в качестве аргументов, но я не могу их отключить, и у меня возникнут трудности из-за того, как javascript передает массивы/объекты в функции.
Как с этим обращаться?
Если вы прекратите использовать эти IIFE, ваша проблема исчезнет, так как тогда у вас будет регулярное определение области. – adeneo
Что у вас есть в 'MainModule',' Utils' и 'Events'? Похоже, вы слишком чем-то отвлеклись и пытаетесь сделать класс. – Brad
У вас может быть «MainModule.exposedVariable». Все остальные модули могут это видеть. – Thilo