在不污染全局命名空间的情况下,在匿名函数之外获取变量的最佳做法是什么?
答案 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问题:
以及其他几个特定于环境的。如果您通过具体示例发布了更详细的问题,我可以提供更具体的答案。