从另一个CoffeeScript文件访问变量?

fan*_*ncy 12 javascript coffeescript

在不污染全局命名空间的情况下,在匿名函数之外获取变量的最佳做法是什么?

jfr*_*d00 8

许多可能性:

  • 创建一个正确的名称范围的公共访问器函数,以根据需要获取值.
  • 将值传递给需要它的函数
  • 将私有访问者功能传递给其他模块
  • 将变量放在正确的名称范围的全局中
  • 将"数据对象"传递给其中包含值的其他模块(以及其他值)

哪个最有意义取决于您需要共享多少数据,需要共享的广泛程度,共享是否两种方式等等......

暴露全局数据的典型设计模式对污染全局命名空间的影响最小,就是这样做:

var JF = JF || {};  // create single global object (if it doesn't already exist)
JF.getMyData = function() {return(xxx);};   // define accessor function
JF.myPublicData = ...;
Run Code Online (Sandbox Code Playgroud)

然后,在您的应用中的任何位置,您都可以呼叫JF.getMyData();或访问JF.myPublicData.

这里的想法是所有公共方法(甚至数据对象)都可以挂在JF对象上,因此全局空间中只有一个新项.其他一切都在那个对象里面.