2011-04-25 86 views
0

這種模式的目的是什麼?JavaScript名稱空間模式(類似於對象的屬性)

var ns=function(){ 
    //do some stuff 
} 

ns.test=function(){ 
    //do another stuff 
} 

我看到類似的代碼,但我不明白這種模式的優點。

也似乎這是類似物體的屬性。

此模式也有一些時間用於閉包,似乎jquery使用它,但不確定。

謝謝!

回答

1

首先,它可以確保您的變量和函數名稱不與可能包含的其他腳本(如廣告,分析,不包含命名空間的庫)的名稱衝突。

+0

所以這兩個函數在技術上不是相對的? – excanoe 2011-04-25 17:05:32

+0

好吧,它的工作方式是ns是一個函數(和一個對象,因爲函數是Javascript中的第一類),它關閉了其他屬性,如ns.test,它也恰好是一個函數。所以函數測試屬於ns對象。 – Jay 2011-04-25 17:19:00

0

出現這種模式是因爲在JavaScript中,函數是擁有自己的屬性和方法的第一類對象。這允許函數自己執行,但也模仿其他語言的東西。這允許你做一些非常強大的事情,比如模仿靜態類,記憶,命名空間等等。