创建JavaScript命名空间的最佳方法是什么?

Tim*_*mmy 10 javascript

我还没有在Internet上找到一种在JavaScript中创建命名空间的常用方法.

创建命名空间的最佳方法是什么(请列出特定方法可能存在的任何缺陷).

med*_*iev 7

(function() {

    var usefulVariable;

    var foo = {
      bar:function(){ alert('hi') }
    };

    // leak into global namespace
    window.foo = foo;

})();
Run Code Online (Sandbox Code Playgroud)

foo暴露于全局命名空间,并且它"存在"您的私有自执行匿名函数命名空间内.


Jus*_*son 7

在JavaScript中,名称空间只能通过对象文字来实现,这可以像这样简单:

var MyNS = {
    f1: function() {...},
    f2: function() {...}
};
Run Code Online (Sandbox Code Playgroud)

正如其他人试图展示的那样,如果您想在命名空间中提供私有范围(建议),则以下方法最合适:

var MyNS = (function() {
    var private1 = "...", 
        private2 = "...";

    return {
        f1: function() {...},
        f2: function() {...}
    }
})();
Run Code Online (Sandbox Code Playgroud)

  • _"命名空间只能通过对象文字实现"_ - 这不是真的.对象文字只是创建对象的一种方法,但其他对象创建方法也可用于"命名空间"目的. (2认同)