Доступ к переменным из другого файла CoffeeScript? - PullRequest
12 голосов
/ 04 июля 2011

Какова лучшая практика, чтобы получить переменную вне ее анонимной функции, не загрязняя глобальное пространство имен?

Ответы [ 2 ]

8 голосов
/ 04 июля 2011

Количество возможностей:

  • Создание функции общедоступного доступа с надлежащей областью именования для получения значения по требованию.
  • Передача значения в функции, где оно потребуется
  • Передать функцию приватного доступа другому модулю
  • Поместить переменную в глобальную область с правильно заданной областью именования
  • Передать «объект данных» другому модулю, который имеетзначение в нем (наряду с другими значениями)

То, что имеет наибольшее значение, зависит от того, сколько данных вам нужно поделиться, насколько широко им нужно делиться, является ли обмен обоими способами и т. д...

Типичный шаблон проектирования для предоставления глобальных данных с минимальным воздействием на загрязнение глобального пространства имен заключается в следующем:

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 голосов
/ 04 июля 2011

Было несколько вопросов о CoffeeScript в этих строках:

, а также ряда других, зависящих от окружающей среды.Если бы вы опубликовали более подробный вопрос с конкретным примером, я мог бы дать более конкретный ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...