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