JavaScript 命名空间声明

标签 javascript

我创建了一个 javascript 类如下:

var MyClass = (function() {
   function myprivate(param) {
      console.log(param);
   }

   return {
      MyPublic : function(param) {
         myprivate(param);
      }
   };
})();

MyClass.MyPublic("hello");

上面的代码是有效的,但我的问题是,如果我想为该类引入命名空间怎么办。

基本上我希望能够像这样调用类:

Namespace.MyClass.MyPublic("Hello World");

如果我添加了 Namespace.MyClass,它会抛出错误“语法错误”。 我确实尝试添加“window.Namespace = {}”,但它也不起作用。

谢谢..:)

最佳答案

通常我建议这样做(假设 Namespace 没有在别处定义):

var Namespace = {};
Namespace.MyClass = (function () {
  // ...
}());

一种更灵活但更复杂的方法:

var Namespace = (function (Namespace) {
   Namespace.MyClass = function() {

       var privateMember = "private";
       function myPrivateMethod(param) {
         alert(param || privateMember);
       };

       MyClass.MyPublicMember = "public";
       MyClass.MyPublicMethod = function (param) {
          myPrivateMethod(param);
       };
   }
   return Namespace
}(Namespace || {}));

这会像上面那样构建 Namespace.MyClass,但不依赖于已经存在的 Namespace。如果它尚不存在,它将声明并创建它。这还允许您在不同的文件中并行加载 Namespace 的多个成员,加载顺序无关紧要。

更多信息:http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth

关于JavaScript 命名空间声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2504568/

相关文章:

javascript - 未捕获的类型错误 : Object #<LanParties> has no method 'call'

javascript - 使用 JavaScript 中的键从 JSON 中查找值

javascript - 在 div 中添加 100 个按钮

javascript - 尝试与服务 worker 一起显示离线页面,但即使在离线状态下,我的请求也会收到 200 响应

javascript - 代表另一台设备登录社交登录

javascript - 移动到 Three.js 后顶点坐标几何体

javascript - FB.Event.subscribe 后删除div

javascript - 将鼠标悬停在与 Raphaël.js 关联的链接上时出现路径填充效果问题

javascript - 如何从云函数中止创建到 firebase 实时数据库?

javascript - 在 Javascript 中处理时间跨度