熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

基於JavaScript 下namespace 功能的簡單分析

2013-11-15 12:11:02  來源: JSP教程 

  之前看到網易還是新浪還是什麼什麼網站來著也是用類似這種東西的當時對js只是九牛一毛的水平當場被嚇傻了
但這次我打算親自分析下以後在看到就不會迷茫了

復制代碼 代碼如下:
//調用例子bradionamespace("bradiolangarray");
 //下面是百度編譯後的源碼變量都是abcd之後我會重新寫一個規范點的
 //好了開始分析
 bradionamespace = function () { //創建命名空間
     var a = arguments //["bradiolangarray"]
         b = null //用於存放上一級對象
         c d e f; //c是計數器d是內層循環的計數器e是拆分後命名空間數組f是arguments參數長度
     c = ;
     for (f = alength; c < f; c++) {
         e = ("" + a[c])split(""); //拆分命名空間拆分後 ["bradio" "lang" "array"]
         b = bradio; //基礎對象基於這個對象進行命名空間的添加
         for (d = "bradio" == e[] ? : ; d < elength; d++) //如果第一個是bradio 就第二個開始遍歷 ["bradio""lang""array"]
             b[e[d]] = b[e[d]] || {} b = b[e[d]]
             //其實相當於
             //b[e[d]] = b[e[d]] || {} //如果當前對象已經操作就用當前對象不存在就賦值空對象
             //b = b[e[d]] //用字對象覆蓋b接下去的循環基於子對象添加命名空間
     }
     return b//返回最後一層對象
 };

  
下面是整理後的能看懂的版本

復制代碼 代碼如下:
//bradionamespace("bradiolangarray");
  bradionamespace = function () { //創建命名空間
      var args = arguments
          parent = null
          arr i j len;
      for (i= len = argslength; i < len; i++) {
          arr = ("" + args[i])split("");
          parent = bradio;
          for(j = "bradio" == arr[] ? : ; j < arrlength; j++) {
              parent[ arr[j] ] = parent[ arr[j] ] || {};
              parent = parent[ arr[j] ];
          }
      }
      return parent;
  }

  
當然只是我的理解如果哪裡不是很對還請各位大俠幫忙指出以免誤導了大家


From:http://tw.wingwit.com/Article/program/Java/JSP/201311/20447.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.