JavaScript名称范围

Ben*_*awk 1 javascript

在您自己的名称范围内编写JavaScript意味着什么,显然它避免了冲突并符合W3C标准,但我不知道它意味着什么或如何完成?

Nic*_*uin 5

这是一种最小化全局变量使用的方法(从而避免可能的冲突).

var myNS = {}; // Your namespace (an object) = a global var.
myNS.title = "Demo"; // Your variables come here as object properties.
myNS.date = "2012-05-21";
Run Code Online (Sandbox Code Playgroud)

对象属性可以是任何类型:标量类型,数组,对象,函数......


Jos*_*eph 5

我认为你的意思是命名空间.这意味着你应该在命名空间中包含你的代码,这样你就不会污染全局范围(好吧,你确实只用一个变量来污染它,而这就是它).您打算创建的每个函数和其他东西都将存在于该命名空间中.

对象文字中的简单命名空间示例

var ns = {
    foo : function(){...},
    bar : function(){...}
}
Run Code Online (Sandbox Code Playgroud)

你只声明了一个全局,ns.其余的存储在其中并可通过ns

ns.foo();
ns.bar();
Run Code Online (Sandbox Code Playgroud)

现实生活中的例子可以在JS框架中看到.例如,我们有jQuery和Underscore

//jQuery uses "jQuery" and "$" as namespaces and has "each()"
$.each();

//Underscore has "_" as a namespace and also has "each()"
_.each();
Run Code Online (Sandbox Code Playgroud)

虽然它们具有相同的函数名称,但它们位于不同的命名空间中.这可以避免冲突,并帮助您识别属于哪里.