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è)比較好的解決方案了。
對(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è)比較好的解決方案了。