function ns(pac)
var arr=pac.split(".");
var tt=window[arr[0]];
var cc=window.c2;
window.c2={};
var tt2=window[arr[0]]||{};
var o=window[arr[0]]=window[arr[0]]||{};
var result=o;
var len=arr.length;
for(var i=1;i上面的函式就是建立命名空間的函式,有幾個知識點,是學到這裡才稍微明白點的。
1:var tt=window[arr[0]];//這個時候tt的值是undefined,因為這個時候window的arr[0]這個屬性沒有值。
原因是arr[0]沒有人賦值給它。arr[0]={};這個才是賦值。
同理cc開始也是undefined。
window.cc={};這個時候window就有cc這個屬性啦。
2:命名空間是個全域性的變數,所以按照設計應該放到window下面快取起來就最合適啦。
3:var o=window[arr[0]]=window[arr[0]]||{};
起到的作用是先判斷window是否有arr[0]這個屬性有就第二個等號賦值覆蓋,沒有就賦值為{};
||的作用是從左到右直到取到有效的值才停止。所謂有效的值是除0,null,undefined,'',nan
JS命名空間
命名空間namespace 某些語言中叫package 是乙個在靜態語言中常見的概念。它可以幫助我們更好地整理 並可避免命名衝突。舉乙個簡單的例子,如果有兩個人都叫小明,我們很難區分和引用這兩個人。但如果我們在他們前面加上命名空間,比如 北京的小明和上海的小明,那麼區分起來就容易的多了,也不會因為重...
JS命名空間with
眾所周知乙個頁面可能會被很多人開發,那麼這時候就有乙個問題,那就是命名的重複 變數,函式名 所以為了解決這個問題,命名空間就應用而生了。可以先看如下 var org jerry groupb org.groupa.jerry.name那麼此時可以發現,如果要使用某個變數,那麼要層層呼叫,但是這回很麻...
JS命名空間(namespace)
命名空間namespace 某些語言中叫package 是乙個在靜態語言中常見的概念。它可以幫助我們更好地整理 並可避免命名衝突。舉乙個簡單的例子,如果有兩個人都叫小明,我們很難區分和引用這兩個人。但如果我們在他們前面加上命名空間,比如 北京的小明和上海的小明,那麼區分起來就容易的多了,也不會因為重...