js的命名空間學習

2021-09-01 04:33:32 字數 726 閱讀 8484

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 是乙個在靜態語言中常見的概念。它可以幫助我們更好地整理 並可避免命名衝突。舉乙個簡單的例子,如果有兩個人都叫小明,我們很難區分和引用這兩個人。但如果我們在他們前面加上命名空間,比如 北京的小明和上海的小明,那麼區分起來就容易的多了,也不會因為重...