Java學習

          java,spring,structs,hibernate,jsf,ireport,jfreechart,jasperreport,tomcat,jboss -----本博客已經搬家了,新的地址是 http://www.javaly.cn 如果有對文章有任何疑問或者有任何不懂的地方,歡迎到www.javaly.cn (Java樂園)指出,我會盡力幫助解決。一起進步

           

          Ext中namespace的作用

          Ext中namespace的作用

          Ext中在每一個頁面中添加一個namespace呢,就像下面的代碼:
          // create namespace
          Ext.namespace('myNameSpace');

          // create application
          myNameSpace.app = function() {
          // do NOT access DOM from here; elements don't exist yet

          // private variables

          // private functions

          // public space
          return {
          // public properties, e.g. strings to translate

          // public methods
          init: function() {
          alert('Application successfully initialized');
          }
          };
          }(); // end of app
          作用呢就是用來封裝一個global范圍對象的屬性和方法,以避免和其它的對象的屬性和方法發生沖突,定義在return塊中的方法和屬性是公共的,外界可以直接訪問,而其余的屬性則不允許外界訪問,通過這種方式,Ext較好的實現了在JavaScript中定義屬性的public/private 問題。
          以下是我又從網上查找的另一篇:
          Ext2.0中,Ext類有個namespace方法,該方法的作用是把傳入的參數轉換成對象.使用該方法的目的主要在于可以區分類名相同的類,這有點和java中的package作用類似.讓我們先看下源碼:
          namespace : function(){
          var a=arguments, o=null, i, j, d, rt;
          for (i=0; i<a.length; ++i) {
          d=a[i].split(".");
          rt = d[0];
          ('if (typeof ' + rt + ' == "undefined"){' + rt + ' = {};} o = ' + rt + ';');

          //初使化第一個根名對象(如:下文的system)
          for (j=1; j<d.length; ++j) {
          o[d[j]]=o[d[j]] || {};

          //把system對象的corp屬性做為一個對象賦值給自己 (相當于system=system.corp)
          o=o[d[j]];

          //把賦值完的帶有corp屬性的system對象再重新賦值給o (相當于o=system.corp)
          }
          }
          }
          從代碼可以看出,如果我們傳入的字符串參數是以"."分割的,那么將會創建多個對象,比如:
          Ext.namespace('system.corp');
          則會創建2個對象,相當于執行了下面的代碼:
          system = {};
          system.corp = {};
          這樣,我們在自定義類的時候就能這樣使用:
          Ext.namespace('system.corp');

          system.corp.ManageCorp = function() {
          //dosomething
          }
          如果還想定義一個同名的類,那么可以就使用不同的namespace來區分,這樣2個類就不會沖突了:
          Ext.namespace('system.admin');

          system.admin.ManageCorp = function() {
          //dosomething
          }

          此外,注意源碼中"eval"方法的使用,如果有需要可以采用這種方式來解決問題
          文章出處:http://www.diybl.com/course/3_program/java/javashl/20081128/152786_2.html

          posted on 2009-07-09 08:58 找個美女做老婆 閱讀(485) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          公告

          本blog已經搬到新家了, 新家:www.javaly.cn
           http://www.javaly.cn

          常用鏈接

          留言簿(6)

          隨筆檔案

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 江华| 保德县| 乳源| 陈巴尔虎旗| 连平县| 武川县| 新竹县| 讷河市| 卫辉市| 沐川县| 自治县| 大竹县| 隆昌县| 双桥区| 攀枝花市| 鄯善县| 隆子县| 昌邑市| 泰州市| 前郭尔| 安化县| 法库县| 墨脱县| 肥东县| 红桥区| 福贡县| 黄浦区| 天全县| 元氏县| 梁山县| 泾阳县| 玉田县| 卢湾区| 沅陵县| 华坪县| 墨玉县| 特克斯县| 体育| 察哈| 临沧市| 蓬溪县|