關於JavaScript命名空間的一些心得_javascript技巧

來源:互聯網
上載者:User

最近重構東西,碰到命名空間的設定,搜了一些知識,請教了一些高手,把自己的心得寫下來
相信大家都知道,window是頂級的,這裡就不寫window了,先忽略

1:關於頂級

複製代碼 代碼如下:
var ns = ns || {};

可以看到,其實就是如果發現沒有這個對象,就自動建立new Object();如果有,就直接使用這個對象,這樣就不會覆蓋。
2: 第二級,當然也可以在頂級的ns下建立第二級,即
複製代碼 代碼如下:
ns.ModuleClass = {};

可以看到,在ns下建立了一個類,當然也可以繼續建立類裡的方法,即是這種:
複製代碼 代碼如下:
ns.ModuleClass.method1= function() {////};

3:多級應該怎麼做呢,比如這種com.qw.view,我想把他設成一個命名空間,這就要對每一個點分隔的名稱進行分別設定命名空間,分別設成對象

我們看一個例子,把他設定在window下:

複製代碼 代碼如下:

function namespace(sSpace) {
  var arr = sSpace.split('.'),i = 0,nameI;
  var root = window;
  for (; nameI = arr[i++];) {
    if (!root[nameI]) {
      root[nameI] = {};
    }
    root = root[nameI];
  }
  return root;
}

可以看到確實是我上面說的思路,用了一個遍曆,把分隔的全部設成對象,這樣每個分隔的都可以單獨用。

4:列一下常用的,簡單快捷的設定命名空間的小技巧吧

複製代碼 代碼如下:

if (!window.ns) {
  window.ns = {};
}
var ns;
if(typeof ns == "undefined"){
  ns = {};
}
if(typeof ns.ClassName == "undefined"){
  ns.ClassName = {};
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.