Posted on 2007-08-28 19:10
Jack L 閱讀(741)
評論(0) 編輯 收藏 所屬分類:
JavaScript
YUI和Dojo的widget都必須存在于自己的名字空間內(nèi),這些名字空間是預(yù)先建立好的。 那么,如果我們要建立自己的名字空間怎么辦呢?(產(chǎn)生這種需求的原因通常是,我們要管理難以管理的JavaScript代碼。)
在YUI中:
執(zhí)行
1. YAHOO.namespace ("myspace");
然后你就擁有了YAHOO.myspace這個(gè)名字空間,可以進(jìn)行類似如下的操作:
2. YAHOO.myspace.alertHello=function() {alert("Hello");}
實(shí)質(zhì)上,YUI.namespace相當(dāng)于建立了一個(gè)表項(xiàng),準(zhǔn)確地說是相聯(lián)數(shù)組(associative array)的一項(xiàng)。 我們可以用以下兩句代替上面的1、2語句
1)YAHOO["myspace"]=new function(){};
2)YAHOO["myspace"].alertHello=function(){ alert("Hello");};
而且1、2與1)、2)可以交叉組合使用。
不管你使用哪種方式創(chuàng)建自己的名字空間,都有兩種方式調(diào)用alertHello
a. YAHOO["myspace"].alertHello();
b. YAHOO.myspace.alertHello();
在Dojo中:
使用方式參考:dojo_custom-namespace;
Dojo.require()提供了更強(qiáng)大的名字空間管理工具:Dojo用module來對應(yīng)名字空間的含義。 我尚為對其相關(guān)函數(shù)的原理進(jìn)行深入研究,也沒有尋找等價(jià)的使用方式。
但是,注意手冊中這句話:“First of all, you'll want to create a directory structure ...”。也就是說,Dojo的module一定要對應(yīng)一個(gè)js文件。
所以dojo.require機(jī)制不是為了創(chuàng)建只存在于邏輯上的名字空間。 dojo.require一定會(huì)去下載相應(yīng)的js文件,參考dojo 0.9的手冊: dojo-require