Ext.namespace解析

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

          對(duì)于java中的包,我們都認(rèn)為主要是為了類名重復(fù)而引入的一種管理類的方法。同樣,因?yàn)閖s定義的類太多,難免會(huì)定義重復(fù)的類名。特別是在今天這個(gè)需要共同協(xié)作完成項(xiàng)目的世界里。Ext.namespace正是為此而生。

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

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

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

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

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

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

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

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          常用鏈接

          留言簿(5)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 民和| 买车| 宿松县| 维西| 新源县| 双牌县| 佳木斯市| 华阴市| 延寿县| 察隅县| 英吉沙县| 浦东新区| 万州区| 武宣县| 内江市| 维西| 林周县| 武威市| 花莲市| 景谷| 星座| 吴旗县| 从化市| 阿鲁科尔沁旗| 县级市| 濮阳县| 宜兴市| 拜城县| 临桂县| 肥西县| 海城市| 册亨县| 扬中市| 伊通| 长葛市| 沾益县| 化隆| 嵊州市| 平遥县| 台州市| 开封县|