物件導向的JavaScript(1):命名空間

來源:互聯網
上載者:User
    在小項目中對於JavaScript使用,只要寫幾個function就行了。但在大型項目中,尤其是在開發追求良好的使用者體驗的網站中,如SNS,就會用到大量的JavaScrpt,有時JavaScript的工作量勝過了C#,這時寫一堆function,就會顯得很亂,雜亂無章,甚至會出現命名衝突,管理和維護起來都很麻煩。對於這種情況我們就需要使用物件導向的思想來開發JavaScript。那我們就這樣作罷:

     對於一個項目,首先要有個命名空間。所以我們首先要做的是定義一個函數來註冊命名空間。代碼如下:

   // 聲明一個全域對象RegisterNameSpace函數,參數為名稱空間全路徑,如"cnblogs.blog"
RegisterNameSpace = function(fullName) {
    // 將命名空間切成N部分
    var nsArray = fullName.split('.');
    var strEval = "";
    var strNS = "";
    for (var i = 0; i < nsArray.length; i++) {
        if (i != 0){
         strNS += ".";
         }
        strNS += nsArray[i];
        // 依次建立構造命名空間對象(假如不存在的話)的語句
        strEval += "if (typeof(" + strNS + ") == 'undefined') " + strNS + " = new Object();"
    }
    if (strEval != "") eval(strEval);
}

       好了,現在來註冊幾個命名空間試試,就已部落格園為例吧,部落格園有幾個模組“部落格”、“新聞”、“小組”......

RegisterNameSpace("cnblogs.blog");
RegisterNameSpace("cnblogs.news");
RegisterNameSpace("cnblogs.group");

       事實上,這裡的命名空間就是一個對象,一個Object。

       如果寫一堆function難免會出現變數或函數的命名衝突,應用了命名空間這種情況就從此杜絕了,而且代碼易於管理。

  
原文地址:http://www.cnblogs.com/xumingxiang/archive/2010/04/30/1725148.html

作者 : 徐明祥
出處:http://www.cnblogs.com/xumingxiang 
著作權:本文著作權歸作者和部落格園共有
轉載:歡迎轉載,為了儲存作者的創作熱情,請按要求【轉載】,謝謝
要求:未經作者同意,必須保留此段聲明;必須在文章中給出原文串連;否則必究法律責任

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.