2012-05-14 44 views
1

這是什麼意思,在您自己的名字範圍內編寫JavaScript,顯然它避免了衝突並符合W3C標準,但我不知道它是什麼意思或它是如何完成的?JavaScript名稱範圍

+3

重複:http://stackoverflow.com/questions/8523231/what-is-meant-by-javascript -namespacing – JaredMcAteer

回答

5

我想你的意思是命名空間。這意味着你應該將你的代碼包含在命名空間中,這樣你就不會污染全局範圍(嗯,你只用一個變量來污染它,就是這樣)。您打算創建的每個函數和其他東西都將存在於該名稱空間中。

一個簡單的命名空間例如,在對象文本

var ns = { 
    foo : function(){...}, 
    bar : function(){...} 
} 

你只申報一個全球性的,ns。其餘的都是通過ns

ns.foo(); 
ns.bar(); 

現實生活中的例子可以在JS框架中可以看出存儲在它和訪問。例如,我們有jQuery和下劃線

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

//Underscore has "_" as a namespace and also has "each()" 
_.each(); 

雖然它們具有相同的功能名稱,但他們生活在不同的命名空間。這避免了衝突,並幫助您確定哪些屬於哪裏。

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"; 

對象屬性可以是任何類型的:標量類型,數組,對象,函數...

3

我猜想這是你自己的對象寫入功能,而不是寫全局函數:

var myScope = (function() { 

    function privateFunction1() {...} 
    function privateFunction2() {...} 
    function a() {...} 
    function b() {...} 
    function c() {...} 

    return {a: a, b: b, c: c}; 

})();