在不污染全局 namespace 的情况下,如何在其匿名函数之外获取变量的最佳实践是什么?

最佳答案

多种可能性:

  • 创建一个适当的名称范围的公共(public)访问器函数,以根据需要获取值。
  • 将值传递到将需要使用的函数中
  • 将私有(private)访问器函数传递给其他模块
  • 将变量放入适当的名称范围的全局
  • 将“数据对象”传递给其中具有值的其他模块(以及其他值)

  • 最有意义的选择取决于您需要共享多少数据,需要共享多少数据,共享是否是双向的,等等。

    暴露全局数据对污染全局 namespace 的影响最小的典型设计模式是执行以下操作:
    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

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

    关于javascript - 从另一个CoffeeScript文件访问变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6567144/

    10-09 23:36