【发布时间】:2012-01-21 08:01:26
【问题描述】:
我对 JavaScript 很陌生,想知道是否有人可以很好地描述 JavaScript 命名空间的含义?
还有任何资源,例如文章等,在这个主题上非常受欢迎。
【问题讨论】:
标签: javascript namespaces javascript-namespaces
我对 JavaScript 很陌生,想知道是否有人可以很好地描述 JavaScript 命名空间的含义?
还有任何资源,例如文章等,在这个主题上非常受欢迎。
【问题讨论】:
标签: javascript namespaces javascript-namespaces
JavaScript 的设计方式使得创建可能以负面方式交互的全局变量非常容易。命名空间的做法通常是创建一个对象字面量来封装自己的函数和变量,以免与其他库创建的发生冲突:
var MyApplication = {
var1: someval,
var2: someval,
myFunc: function() {
// do stuff
}
};
然后不是全局调用myFunc(),而是始终调用为:
MyApplication.myFunc();
同样,var1 始终访问为:
console.log(MyApplication.var1);
在这个例子中,我们所有的应用程序代码都在MyApplication 中命名空间。因此,我们的变量与其他库创建的或 DOM 创建的变量发生冲突的可能性要小得多。
【讨论】:
我使用这种命名空间技术,以及Crockford 概述的“使用严格”
var MyNamespace = (function () {
"use strict";
function SomeOtherFunction() {
}
function Page_Load() {
}
return { //Expose
Page_Load: Page_Load,
SomeOtherFunction: SomeOtherFunction
};
} ());
MyNamespace.Page_Load();
【讨论】: