Ext.namespace解析

          文章分類:Web前端
          對于這個函數,我一直不太清楚,今天查了查官方的解釋,豁然開朗。

          對于java中的包,我們都認為主要是為了類名重復而引入的一種管理類的方法。同樣,因為js定義的類太多,難免會定義重復的類名。特別是在今天這個需要共同協作完成項目的世界里。Ext.namespace正是為此而生。

          Ext.namespace('com.company');
          就是定義了一個com.company的包。

          com.company.ClassA = function(){};就是定義了com.company包下面的一個Class。你一定會問,既然定義了包,為什么還要寫包的前綴 com.company?我直接寫com.company.ClassA = function(){}不行嗎?對,一開始我也有這樣的疑惑,com.company.ClassA不就是一個變量名稱嗎?哪兒來的包。后來經實 踐,javascript的變量名稱是不準包括'.'的。因此,直接寫com.company.ClassA = function(){};在語法上是不正確的。

          現在想起來Ext在namespace的解決方法了。查看ext的官方解釋,如果我們不用Ext.namespace的話,創建命名空間應該這樣。

          if (!App) App = {};
          if (!App.form) App.form = {};
          if (!App.data) App.data = {};

          而 Ext.namespace('App', 'App.form', 'App.data');
          則跟上面3句話的作用是一樣的。

          可以看出,這個包其本質上是一個對象,一個window的變量。也就是說,我們的包是一個分層次的對象。如com.company,應該解釋成 com對象的一個屬性 company。如果定義這個包下面的類,則應該把這個類添加到com對象的屬性company的屬性里面。

          到此,ext的 namespace的實現機制基本上就出來了。盡管實現包的方法很牽強,但目前可能是一個比較好的解決方案了。
          posted on 2011-04-08 14:36 sanmao 閱讀(163) 評論(0)  編輯  收藏

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


          網站導航:
           

          常用鏈接

          留言簿(5)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 手机| 衢州市| 宿州市| 拜城县| 兰溪市| 多伦县| 湟中县| 隆昌县| 镇赉县| 阳西县| 汾西县| 孝昌县| 谷城县| 普安县| 镇坪县| 苏尼特左旗| 青铜峡市| 房产| 高尔夫| 同德县| 定日县| 独山县| 稻城县| 龙陵县| 恩施市| 上林县| 漯河市| 德清县| 阿荣旗| 安平县| 孟连| 肇庆市| 庄河市| 镇远县| 沭阳县| 读书| 丽水市| 体育| 徐汇区| 孝感市| 西藏|