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

时间:2011-07-04 03:55:24

标签: javascript coffeescript

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

2 个答案:

答案 0 :(得分:8)

有很多可能性:

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

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

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

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对象之外,因此全局空间中只有一个新项。其他一切都在一个对象里面。

答案 1 :(得分:2)

这些问题上有几个CoffeeScript问题:

以及其他几个特定于环境的。如果您通过具体示例发布了更详细的问题,我可以提供更具体的答案。