这是什么意思,在您自己的名称范围内编写 JavaScript,显然它避免了冲突并符合 W3C 标准,但我不知道它的含义或它是如何完成的?
问问题
296 次
3 回答
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";
对象属性可以是任何类型:标量类型、数组、对象、函数...
于 2012-05-14T13:24:04.037 回答
5
我认为你的意思是命名空间。这意味着您应该将代码包含在命名空间中,这样您就不会污染全局范围(好吧,您确实只用一个变量污染了它,仅此而已)。您打算创建的每个函数和其他内容都将存在于该命名空间中。
一个简单的命名空间示例,在对象字面量中
var ns = {
foo : function(){...},
bar : function(){...}
}
您只声明了一个全局ns
. 其余的存储在其中并通过以下方式访问ns
ns.foo();
ns.bar();
现实生活中的例子可以在 JS 框架中看到。例如,我们有 jQuery 和 Underscore
//jQuery uses "jQuery" and "$" as namespaces and has "each()"
$.each();
//Underscore has "_" as a namespace and also has "each()"
_.each();
尽管它们具有相同的函数名称,但它们位于不同的命名空间中。这可以避免冲突,并帮助您确定哪些内容属于哪里。
于 2012-05-14T13:24:23.893 回答
3
我想这意味着在您自己的对象中编写函数,而不是编写全局函数:
var myScope = (function() {
function privateFunction1() {...}
function privateFunction2() {...}
function a() {...}
function b() {...}
function c() {...}
return {a: a, b: b, c: c};
})();
于 2012-05-14T13:25:37.483 回答