Posted on 2007-08-28 19:10
Jack L 阅读(731)
评论(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