【问题标题】:What is meant by 'JavaScript Namespacing'? [duplicate]“JavaScript 命名空间”是什么意思? [复制]
【发布时间】:2012-01-21 08:01:26
【问题描述】:

可能重复:
Javascript Namespacing

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

还有任何资源,例如文章等,在这个主题上非常受欢迎。

【问题讨论】:

标签: javascript namespaces javascript-namespaces


【解决方案1】:

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

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

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

MyApplication.myFunc();

同样,var1 始终访问为:

console.log(MyApplication.var1);

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

【讨论】:

    【解决方案2】:

    我使用这种命名空间技术,以及Crockford 概述的“使用严格”

    var MyNamespace = (function () {
        "use strict"; 
    
        function SomeOtherFunction() {
    
        }
    
        function Page_Load() {
    
        }
    
        return { //Expose 
            Page_Load: Page_Load,
            SomeOtherFunction: SomeOtherFunction
        };
    } ());
    
    MyNamespace.Page_Load();
    

    【讨论】:

      【解决方案3】:

      阅读一个简单的教程Here

      命名空间用于避免污染全局命名空间(没有window.variables)。实际上,每个命名空间只是一个大变量,它有很多属性和方法。

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

      【讨论】:

      • 链接已失效。也许使用来自archive.org的this one
      猜你喜欢
      • 2019-03-21
      • 2013-09-29
      • 2015-07-15
      • 2018-07-17
      • 2014-09-22
      • 2017-05-15
      • 2011-04-16
      • 2012-12-27
      • 1970-01-01
      相关资源
      最近更新 更多