Ext2.0中,Ext類有個namespace方法,該方法的作用是把傳入的參數(shù)轉換成對象.使用該方法的目的主要在于可以區(qū)分類名相同的類,這有點和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];
eval('if (typeof ' + rt + ' == "undefined")
{' + rt + ' =
{};} o = ' + rt + ';');

for (j=1; j<d.length; ++j)
{

o[d[j]]=o[d[j]] ||
{};
o=o[d[j]];
}
}
}
從代碼可以看出,如果我們傳入的字符串參數(shù)是以"."分割的,那么將會創(chuàng)建多個對象,比如:
Ext.namespace('system.corp');
則會創(chuàng)建2個對象,相當于執(zhí)行了下面的代碼:

system =
{};

system.corp =
{};
這樣,我們在自定義類的時候就能這樣使用:
Ext.namespace('system.corp');


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


system.admin.ManageCorp = function()
{
//dosomething
}
此外,注意源碼中"eval"方法的使用,如果有需要可以采用這種方式來解決問題.
posted on 2008-03-19 22:24
zhangchao 閱讀(1665)
評論(8) 編輯 收藏 所屬分類:
Ext