[Tips]:JavaScript命名空間

來源:互聯網
上載者:User

項目中,我們經常這樣寫JS, function(){}; 但函數多了不好管理且容易衝突,我們可以使用如下的方法來定義命名空間。

   1: Namespace = new Object();
   2:  
   3: // 全域對象僅存在register函數,參數為名稱空間全路徑LB.MAP
   4: Namespace.register = function(fullNameSpace) {
   5:    // 將命名空間按點分成幾個部分,如LB.MAP
   6:    var nsArray = fullNameSpace.split('.');
   7:    var sEval = "";
   8:    var sNS = "";
   9:    for (var i = 0; i < nsArray.length; i++) {
  10:        if (i != 0) sNS += ".";
  11:        sNS += nsArray[i];
  12:        // 依次建立構造命名空間對象(假如不存在的話)                  
  13:        sEval += "if (typeof(" + sNS + ") == 'undefined') " + sNS + " = new Object();"
  14:    }
  15:    if (sEval != "") eval(sEval);
  16: }
  17:  
  18: // 註冊命名空間LB.MAP, LB.UI
  19: Namespace.register("LB.MAP");
  20: Namespace.register("LB.UI");
  21:  
  22: //聲明類GoogleMap
  23: LB.MAP.GoogleMap = function(zoom, center) {
  24:    this.zoom = zoom;
  25:    this.center = center;
  26: }
  27:  
  28: // GoogleMap類添加一個公用方法show()
  29: LB.MAP.GoogleMap.prototype.Display = function() {
  30:    alert("google map zoom is"+ this.zoom+" and center is "+this.center);
  31: }
  32:  
  33: var map = new LB.MAP.GoogleMap("4X", 20.00);
  34:  
  35: // 給對象上添加方法
  36: map.MoveLeft = function() { alert("I move left"); };
  37:  
  38: map.Display();
  39: map.MoveLeft();

相關文章

聯繫我們

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