26

可能重复:
Javascript 命名空间

我对 JavaScript 很陌生,想知道是否有人可以很好地描述 JavaScript 命名空间的含义?

此外,任何资源(例如文章等)都非常感谢该主题。

4

3 回答 3

40

JavaScript 的设计方式使得创建可能以负面方式交互的全局变量非常容易。命名空间的做法通常是创建一个对象字面量来封装您自己的函数和变量,以免与其他库创建的那些发生冲突:

var MyApplication = {
  var1: someval,
  var2: someval,
  myFunc: function() {
    // do stuff
  }
};

然后不是myFunc()全局调用,而是始终调用为:

MyApplication.myFunc();

同样,var1始终访问为:

console.log(MyApplication.var1);

在这个例子中,我们所有应用程序的代码都在MyApplication. 因此,我们的变量与其他库创建的或 DOM 创建的变量发生冲突的可能性要小得多。

于 2011-12-15T16:24:10.523 回答
6

I use this namespacing technique, along with "use strict" outlined by Crockford

var MyNamespace = (function () {
    "use strict"; 

    function SomeOtherFunction() {

    }

    function Page_Load() {

    }

    return { //Expose 
        Page_Load: Page_Load,
        SomeOtherFunction: SomeOtherFunction
    };
} ());

MyNamespace.Page_Load();
于 2011-12-15T16:32:07.453 回答
3

阅读一个简单的教程在这里

命名空间用于避免污染全局命名空间(无窗口。变量)。事实上,每个命名空间只是一个大变量,它有许多属性和方法。

发生这种情况,因为在 javascript 中,您可以将整个函数(方法)作为变量

于 2011-12-15T16:23:44.727 回答