Как лучше всего получить переменную за пределами ее анонимной функции, не загрязняя глобальное пространство имен?
Доступ к переменным из другого файла CoffeeScript?
Ответ 1
Несколько возможностей:
- Создайте общедоступную функцию общего доступа с расширением имен, чтобы получить значение по требованию.
- Передайте значение тем функциям, в которых они понадобятся.
- Передайте частную функцию доступа другому модулю
- Поместите переменную в глобальную глобальную область
- Передайте "объект данных" другому модулю, который имеет в нем значение (вместе с другими значениями)
Что наиболее важно, зависит от того, сколько данных вам нужно поделиться, насколько широко оно должно быть общим, независимо от того, является ли совместное использование обоими способами и т.д.
Типичный шаблон проектирования для публикации глобальных данных с минимальным воздействием на загрязнение глобального пространства имен заключается в следующем:
var JF = JF || {}; // create single global object (if it doesn't already exist)
JF.getMyData = function() {return(xxx);}; // define accessor function
JF.myPublicData = ...;
Затем в любом месте вашего приложения вы можете вызвать JF.getMyData();
или получить доступ к JF.myPublicData
.
Идея здесь в том, что все общедоступные методы (или даже объекты данных) можно отвиснуть от объекта JF, так что в глобальном пространстве есть только один новый элемент. Все остальное находится внутри одного объекта.
Ответ 2
В этом разделе было несколько вопросов, связанных с CoffeeScript:
- Как определить глобальные переменные в CoffeeScript?
- Выставить javascript api с coffeescript
- Избавиться от оболочки закрытия CoffeeScript
а также несколько других, относящихся к окружающей среде. Если вы представили более подробный вопрос с конкретным примером, я мог бы дать более конкретный ответ.