Javascript命名空间和私有模块

时间:2011-12-07 10:40:58

标签: javascript namespaces private

这是一个JS新手问题,我正在使用父命名空间 Base ,我在这个命名空间中包含了我的所有代码。

file model.js

 Base = {}

 Base.Observer =  {
   method1 : function(){//...},
   method2 : function(){//...}
 };

 Base.Bot = function(name){
  this.name = name;
  this.somefunc = function(){};
 }

file presenter.js

Base.Presenter = {

}

文件helper.js

Base.Helper = { };

现在我的问题是我希望将此模块保密。不允许任何用户通过任何浏览器工具访问,如firebug。所以我只能考虑将它们包装在一个自动执行的匿名函数中,并将 Base 变成一个局部变量,这将导致 presenter.js helper.js 无法访问 Base 命名空间。

我想保持文件分开,因为它有助于保持代码组织,但我似乎无法确定执行此操作的正确方法。非常感谢任何帮助。

谢谢

1 个答案:

答案 0 :(得分:1)

  

所以我只能想到将它们包装在一个自执行匿名函数中并将Base变成一个局部变量

这是通常的做法

  

会导致presenter.js和helper.js无法访问Base命名空间。

该函数应该return Base;,然后您将其分配给全局。

请参阅the module pattern