﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-&lt;font size="5"&gt;Web2.0学习园地&lt;/font&gt;-文章分类-DOJO</title><link>http://www.blogjava.net/CrazyJava/category/15716.html</link><description>&lt;marquee behavior="alternate" scrolldelay=3 scrollamount=3&gt;
&lt;font face="楷体_GB2312" color="#FFFF00" size="4"&gt;网络无所不在,应用无所不在,服务无所不在!&lt;/font&gt;
&lt;/marquee&gt;</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 18:21:57 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 18:21:57 GMT</pubDate><ttl>60</ttl><item><title>Dojo学习笔记(9. dojo.graphics.color &amp; dojo.uri.Uri)</title><link>http://www.blogjava.net/CrazyJava/articles/72179.html</link><dc:creator>CrazyJava</dc:creator><author>CrazyJava</author><pubDate>Wed, 27 Sep 2006 01:14:00 GMT</pubDate><guid>http://www.blogjava.net/CrazyJava/articles/72179.html</guid><wfw:comment>http://www.blogjava.net/CrazyJava/comments/72179.html</wfw:comment><comments>http://www.blogjava.net/CrazyJava/articles/72179.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/CrazyJava/comments/commentRss/72179.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/CrazyJava/services/trackbacks/72179.html</trackback:ping><description><![CDATA[
		<p>模块：dojo.graphics.color</p>
		<p>
				<br />下面是dojo里定义的颜色名称<br />dojo.graphics.color.named.white //白色<br />dojo.graphics.color.named.black //黑色<br />dojo.graphics.color.named.red //红色<br />dojo.graphics.color.named.green //绿色<br />dojo.graphics.color.named.blue //蓝色<br />dojo.graphics.color.named.navy //海军蓝<br />dojo.graphics.color.named.gray //灰色<br />dojo.graphics.color.named.silver//银色</p>
		<p>
				<br />dojo.graphics.color.Color</p>
		<p>颜色类</p>
		<p>
				<br />Usage Example:</p>
		<p>
				<br />var color = new dojo.graphics.color.Color(dojo.graphics.color.named.black); //定义一个黑色的颜色对象<br />var color = new dojo.graphics.color.Color(0,0,0); //定义一个黑色的颜色对象<br />var color = new dojo.graphics.color.Color(0,0,0,1.0); //定义一个黑色的颜色对象<br />var color = new dojo.graphics.color.Color([0,0,0,1.0]); //定义一个黑色的颜色对象<br />var color = new dojo.graphics.color.Color('rgb(0,0,0)'); //定义一个黑色的颜色对象<br />var color = new dojo.graphics.color.Color('#000000'); //定义一个黑色的颜色对象</p>
		<p>
				<br />
				<br />dojo.graphics.color.Color.toRgb</p>
		<p>
				<br />Usage Example:</p>
		<p>
				<br />color.toRgb();  //返回一个[0,0,0]的数组<br />color.toRgb(true); //返回一个[0,0,0,1.0]的数组</p>
		<p>
				<br />
				<br />dojo.graphics.color.Color.toRgba</p>
		<p>
				<br />Usage Example:</p>
		<p>
				<br />color.toRgba();  //返回一个[0,0,0,1.0]的数组</p>
		<p>
				<br />
				<br />dojo.graphics.color.Color.toHex<br />dojo.graphics.color.Color.toString</p>
		<p>
				<br />Usage Example:</p>
		<p>
				<br />color.toHex();  //返回"#000000"<br />color.toString(); //返回"#000000"</p>
		<p>
				<br />
				<br />dojo.graphics.color.Color.toCss</p>
		<p>
				<br />Usage Example:</p>
		<p>
				<br />color.toCss();  //返回"rgb(0,0,0)"</p>
		<p>
				<br />
				<br />dojo.graphics.color.Color.blend</p>
		<p>
				<br />混合另一个颜色得到一个新颜色</p>
		<p>
				<br />Usage Example:<br /><br />color.blend('#ffffff', 1); //返回[255,255,255]<br />color.blend('#ffffff', -1); //返回[0,0,0]<br />color.blend('#ffffff', 0); //按1比1混合黑色和白色，返回[127,127,127]<br />颜色参数可以为颜色的任意形式，比如数组，字符串等</p>
		<p>
				<br />or</p>
		<p>
				<br />dojo.graphics.color.blend([0,0,0], [255,255,255], 0); //will return [127,127,127]<br />dojo.graphics.color.blend("#000000", "#ffffff", 0); //will return "#7f7f7f"<br />若第一个参数为字符串，则返回值也会返回字符串</p>
		<p>
				<br />
				<br />dojo.graphics.color.Color.blendHex</p>
		<p>
				<br />Usage Example:</p>
		<p>
				<br />dojo.graphics.color.blendHex("#000000", "#ffffff", 0); //will return "#7f7f7f"</p>
		<p>
				<br />
				<br />dojo.graphics.color.extractRGB</p>
		<p>
				<br />将输入转换为RGB数组</p>
		<p>
				<br />dojo.graphics.color.hex2rgb</p>
		<p>
				<br />将输入的字符串转换为RGB数组</p>
		<p>
				<br />dojo.graphics.color.rgb2hex</p>
		<p>
				<br />将输入的RGB数组转换为字符串</p>
		<p>
				<br />
				<br />dojo.graphics.color.Color.fromArray</p>
		<p>
				<br />Usage Example:</p>
		<p>
				<br />var color = dojo.graphics.color.Color.fromArray([0,0,0,1.0]);</p>
		<p>
				<br />
				<br />模块：dojo.uri.Uri</p>
		<p>
				<br />dojo.uri.Uri</p>
		<p>
				<br />专门用来处理URI(统一资源标识符)的类</p>
		<p>
				<br />Usage Example:</p>
		<p>
				<br />uri = (new dojo.uri.Uri("<a href="http://myserver/dojo/"><font color="#003366">http://myserver/dojo/</font></a>", "guide.html")).toString(); //uri will be "<a href="http://myserver/dojo/guide.html"><font color="#003366">http://myserver/dojo/guide.html</font></a>"<br />uri = (new dojo.uri.Uri("<a href="http://myserver/dojo/"><font color="#003366">http://myserver/dojo/</font></a>", "../guide.html")).toString(); //uri will be "<a href="http://myserver/guide.html"><font color="#003366">http://myserver/guide.html</font></a>"</p>
		<p>
				<br />RFC规定的URI语法：[scheme:][//authority][path][?query][#fragment]<br />authority语法：[user-info@]host[:port]</p>
		<p>
				<br />比如我们定义一个uri<br /><br />var uri = new dojo.uri.Uri("<a href="http://user:password@myserver/dojo/"><font color="#003366">http://user:password@myserver:80/dojo/</font></a>", "guide.html?page=1#top");</p>
		<p>
				<br />则uri的属性如下：</p>
		<p>
				<br />authority: 服务器名 "user:password@myserver:80"<br />fragment: 片断名 "top"<br />host: 主机名 "myserver"<br />password: 密码 "password"<br />path: 路径 "/dojo/guide.html"<br />port: 端口 80<br />query: 参数 "page=1"<br />scheme: 模式 "http"<br />uri: 完整的地址 "<a href="http://user:password@myserver/dojo/guide.html?page=1"><font color="#003366">http://user:password@myserver:80/dojo/guide.html?page=1</font></a>"<br />user: 用户名 "user:" 似乎有点问题，多了一个冒号<br /></p>
<img src ="http://www.blogjava.net/CrazyJava/aggbug/72179.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/CrazyJava/" target="_blank">CrazyJava</a> 2006-09-27 09:14 <a href="http://www.blogjava.net/CrazyJava/articles/72179.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Dojo学习笔记(7. dojo.dom)</title><link>http://www.blogjava.net/CrazyJava/articles/72172.html</link><dc:creator>CrazyJava</dc:creator><author>CrazyJava</author><pubDate>Wed, 27 Sep 2006 00:58:00 GMT</pubDate><guid>http://www.blogjava.net/CrazyJava/articles/72172.html</guid><wfw:comment>http://www.blogjava.net/CrazyJava/comments/72172.html</wfw:comment><comments>http://www.blogjava.net/CrazyJava/articles/72172.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/CrazyJava/comments/commentRss/72172.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/CrazyJava/services/trackbacks/72172.html</trackback:ping><description><![CDATA[
		<p>模块：dojo.dom</p>
		<p>dojo.dom.isNode</p>
		<p>测试指定对象是否为节点</p>
		<p>Usage Example:</p>
		<p>dojo.dom.isNode(dojo.byId('edtTitle'));</p>
		<p>
				<br />dojo.dom.getUniqueId</p>
		<p>取得唯一id</p>
		<p>Usage Example:</p>
		<p>dojo.dom.getUniqueId();  //will return dj_unique_#</p>
		<p>
				<br />dojo.dom.firstElement = dojo.dom.getFirstChildElement</p>
		<p>取得指定节点下的第一个满足指定Tag条件的子节点</p>
		<p>Usage Example:</p>
		<p>dojo.dom.firstElement(parentNode, 'SPAN');</p>
		<p>
				<br />dojo.dom.lastElement = dojo.dom.getLastChildElement</p>
		<p>取得指定节点下的最后一个满足指定Tag条件的子节点</p>
		<p>Usage Example:</p>
		<p>dojo.dom.lastElement(parentNode, 'SPAN');</p>
		<p>
				<br />dojo.dom.nextElement = dojo.dom.getNextSiblingElement</p>
		<p>取得指定节点的下一个满足指定Tag条件的子节点</p>
		<p>Usage Example:</p>
		<p>dojo.dom.nextElement(node, 'SPAN');</p>
		<p>
				<br />dojo.dom.prevElement = dojo.dom.getPreviousSiblingElement</p>
		<p>取得指定节点的前一个满足指定Tag条件的子节点</p>
		<p>Usage Example:</p>
		<p>dojo.dom.prevElement(node, 'SPAN');</p>
		<p>
				<br />dojo.dom.moveChildren</p>
		<p>把指定节点下的所有子节点移动到目标节点下，并返回移动的节点数</p>
		<p>Usage Example:</p>
		<p>dojo.dom.moveChildren(srcNode, destNode, true); //仅移动子节点，srcNode中的文字将被丢弃<br />dojo.dom.moveChildren(srcNode, destNode, false);//包括文字和子节点都将被移动到目标节点下</p>
		<p>
				<br />dojo.dom.copyChildren</p>
		<p>把指定节点下的所有子节点复制到目标节点下，并返回复制的节点数</p>
		<p>Usage Example:</p>
		<p>dojo.dom.moveChildren(srcNode, destNode, true); //仅复制子节点，srcNode中的文字将被忽略<br />dojo.dom.moveChildren(srcNode, destNode, false);//包括文字和子节点都将被复制到目标节点下</p>
		<p>
				<br />dojo.dom.removeChildren</p>
		<p>删除指定节点下的所有子节点，并返回删除的节点数</p>
		<p>Usage Example:</p>
		<p>dojo.dom.moveChildren(node);</p>
		<p>
				<br />dojo.dom.replaceChildren</p>
		<p>用指定的新节点替换父节点下的所有子节点</p>
		<p>Usage Example:</p>
		<p>dojo.dom.replaceChildren(node, newChild); //目前还不支持newChild为数组形式</p>
		<p>
				<br />dojo.dom.removeNode</p>
		<p>删除指定的节点</p>
		<p>Usage Example:</p>
		<p>dojo.dom.removeNode(node);</p>
		<p>
				<br />dojo.dom.getAncestors</p>
		<p>返回指定节点的父节点集合</p>
		<p>Usage Example:</p>
		<p>dojo.dom.getAncestors(node, null, false); //返回所有的父节点集合（包括指定的节点node）<br />dojo.dom.getAncestors(node, null, true); //返回最近的一个父节点<br />dojo.dom.getAncestors(node, function(el){/* 此处增加过滤条件 */return true}, false); //返回所有满足条件的父节点集合</p>
		<p>
				<br />dojo.dom.getAncestorsByTag</p>
		<p>返回所有符合指定Tag的指定节点的父节点集合</p>
		<p>Usage Example:</p>
		<p>dojo.dom.getAncestorsByTag(node, 'span', false); //返回所有的类型为SPAN的父节点集合<br />dojo.dom.getAncestorsByTag(node, 'span', true);  //返回最近的一个类型为SPAN的父节点</p>
		<p>
				<br />dojo.dom.getFirstAncestorByTag</p>
		<p>返回最近的一个符合指定Tag的指定节点的父节点</p>
		<p>Usage Example:</p>
		<p>dojo.dom.getFirstAncestorByTag(node, 'span'); //返回最近的一个类型为SPAN的父节点</p>
		<p>
				<br />dojo.dom.isDescendantOf</p>
		<p>判断指定的节点是否为另一个节点的子孙</p>
		<p>Usage Example:</p>
		<p>dojo.dom.isDescendantOf(node, ancestor, true); //判断node是否为ancestor的子孙<br />dojo.dom.isDescendantOf(node, node, false); //will return true<br />dojo.dom.isDescendantOf(node, node, true); //will return false</p>
		<p>
				<br />dojo.dom.innerXML</p>
		<p>返回指定节点的XML</p>
		<p>Usage Example:</p>
		<p>dojo.dom.innerXML(node);</p>
		<p>
				<br />dojo.dom.createDocument</p>
		<p>创建一个空的文档对象</p>
		<p>Usage Example:</p>
		<p>dojo.dom.createDocument();</p>
		<p>
				<br />dojo.dom.createDocumentFromText</p>
		<p>根据文字创建一个文档对象</p>
		<p>Usage Example:</p>
		<p>dojo.dom.createDocumentFromText('&lt;?xml version="1.0" encoding="gb2312" ?&gt;&lt;a&gt;1&lt;/a&gt;','text/xml');</p>
		<p>
				<br />dojo.dom.prependChild</p>
		<p>将指定的节点插入到父节点的最前面</p>
		<p>Usage Example:</p>
		<p>dojo.dom.prependChild(node, parent);</p>
		<p>
				<br />dojo.dom.insertBefore</p>
		<p>将指定的节点插入到参考节点的前面</p>
		<p>Usage Example:</p>
		<p>dojo.dom.insertBefore(node, ref, false); //如果满足要求的话就直接退出<br />dojo.dom.insertBefore(node, ref, true);</p>
		<p>
				<br />dojo.dom.insertAfter</p>
		<p>将指定的节点插入到参考节点的后面</p>
		<p>Usage Example:</p>
		<p>dojo.dom.insertAfter(node, ref, false); //如果满足要求的话就直接退出<br />dojo.dom.insertAfter(node, ref, true);</p>
		<p>
				<br />dojo.dom.insertAtPosition</p>
		<p>将指定的节点插入到参考节点的指定位置</p>
		<p>Usage Example:</p>
		<p>dojo.dom.insertAtPosition(node, ref, "before");//参考节点之前<br />dojo.dom.insertAtPosition(node, ref, "after"); //参考节点之后<br />dojo.dom.insertAtPosition(node, ref, "first"); //参考节点的第一个子节点<br />dojo.dom.insertAtPosition(node, ref, "last");  //参考节点的最后一个子节点<br />dojo.dom.insertAtPosition(node, ref); //默认位置为"last"</p>
		<p>
				<br />dojo.dom.insertAtIndex</p>
		<p>将指定的节点插入到参考节点的子节点中的指定索引的位置</p>
		<p>Usage Example:</p>
		<p>dojo.dom.insertAtIndex(node, containingNode, 3);  //把node插入到containingNode的子节点中，使其成为第3个子节点</p>
		<p>
				<br />dojo.dom.textContent</p>
		<p>设置或获取指定节点的文本</p>
		<p>Usage Example:</p>
		<p>dojo.dom.textContent(node, 'text'); //设置node的文本为'text'<br />dojo.dom.textContent(node); //返回node的文本</p>
		<p>
				<br />dojo.dom.hasParent</p>
		<p>判断指定节点是否有父节点</p>
		<p>Usage Example:</p>
		<p>dojo.dom.hasParent(node);</p>
		<p>
				<br />dojo.dom.isTag</p>
		<p>判断节点是否具有指定的tag</p>
		<p>Usage Example:</p>
		<p>var el = document.createElement("SPAN");<br />dojo.dom.isTag(el, "SPAN"); //will return "SPAN"<br />dojo.dom.isTag(el, "span"); //will return ""<br />dojo.dom.isTag(el, "INPUT", "SPAN", "IMG"); //will return "SPAN"<br /></p>
<img src ="http://www.blogjava.net/CrazyJava/aggbug/72172.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/CrazyJava/" target="_blank">CrazyJava</a> 2006-09-27 08:58 <a href="http://www.blogjava.net/CrazyJava/articles/72172.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Dojo学习笔记(8. dojo.event &amp; dojo.event.topic &amp; dojo.event.browser) </title><link>http://www.blogjava.net/CrazyJava/articles/72173.html</link><dc:creator>CrazyJava</dc:creator><author>CrazyJava</author><pubDate>Wed, 27 Sep 2006 00:58:00 GMT</pubDate><guid>http://www.blogjava.net/CrazyJava/articles/72173.html</guid><wfw:comment>http://www.blogjava.net/CrazyJava/comments/72173.html</wfw:comment><comments>http://www.blogjava.net/CrazyJava/articles/72173.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/CrazyJava/comments/commentRss/72173.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/CrazyJava/services/trackbacks/72173.html</trackback:ping><description><![CDATA[
		<p>模块：dojo.event</p>
		<p>终于进入有名的dojo事件处理系统的学习了，学习前建议读者先去补习一下AOP的相关知识</p>
		<p>dojo.event.connect</p>
		<p>绑定指定的方法到指定的对象的方法上</p>
		<p>Usage Example:</p>
		<p>简单绑定1</p>
		<p>function doOnClick1()<br />{<br /> alert("Clicked!");<br />}<br />dojo.event.connect(dojo.byId("inputTest"),"onclick","doOnClick1");</p>
		<p>简单绑定2</p>
		<p>obj = { doOnClick2: function(){ alert("Clicked!");}}<br />dojo.event.connect(dojo.byId("inputTest"),"onclick",obj,"doOnClick2");</p>
		<p>如果存在需要进行多个事件的绑定的时候，你就会看到dojo的方便之处了</p>
		<p>obj2 = { doOnClick2: function(){alert("Clicked!");}}<br />dojo.event.connect(dojo.byId("inputTest"),"onclick",obj,"doOnClick2");<br />dojo.event.connect(dojo.byId("inputTest"),"onclick",obj2,"doOnClick2");</p>
		<p>connect可以对任何对象的方法进行绑定，而不是只能针对DOM对象</p>
		<p>dojo.event.connect(obj,"doOnclick2","doOnClick1"); //在调用obj.doOnclick2()后调用doOnClick1()</p>
		<p>
				<br />dojo.event.connectBefore</p>
		<p>dojo.event.connect默认是后绑定，connectBefore则是早绑定，绑定的方法将在指定方法前执行，用法与connect一致</p>
		<p>
				<br />dojo.event.connectAround</p>
		<p>Usage Example:</p>
		<p>function aroundTest(invocation){<br />  //此处可以增加代码，比如检查参数(invocation.args)<br />  var result = invocation.proceed();<br />  //此处可以增加代码，比如修改结果(result)<br />  return result;<br />}<br />dojo.event.connectAround(dojo.byId("inputTest"),"onclick","aroundTest");</p>
		<p>
				<br />dojo.event.connectOnce<br />说起这个函数，还真的是让我想了半天，直觉上我就把它想象成executeOnce，结果测试的结果让我差点想不通<br />connectOnce就是指保证只绑定一次，来避免重复绑定会导致的重复执行的问题</p>
		<p>
				<br />dojo.event.disconnect</p>
		<p>解除绑定，调用参数与connect一致，即可解除之前的绑定操作</p>
		<p>
				<br />dojo.event.log</p>
		<p>在执行指定对象的指定方法后自动记录日志</p>
		<p>Usage Example:</p>
		<p>dojo.event.log(obj, "doOnClick"); //当调用obj.doOnClick时记录下日志"DEBUG:  ([object Object]).doOnClick : "</p>
		<p>你也可以这样写：</p>
		<p>dojo.event.log({srcObj: obj, srcFunc: "doOnClick"});</p>
		<p>
				<br />dojo.event.kwConnect</p>
		<p>kwConnect可以做到更加灵活的绑定，比如可以设置延迟执行绑定</p>
		<p>Usage Example:</p>
		<p>dojo.event.kwConnect({<br />  srcObj: dojo.byId("inputTest"),<br />  srcFunc: "onclick",<br />  adviceObj: obj,<br />  adviceFunc: "doOnclick2",</p>
		<p>  type: "before", //默认为"after"，可选: "before", "around"，注意：type是用来决定adviceFunc的行为的，如果为"around"，则aroundFunc将失效<br />  aroundObj: null,<br />  aroundFunc: null, //如果指定了aroundFunc，则其将对adviceFunc进行拦截，但是当type为"around"时，则aroundFunc将不会执行<br />  once: false, //默认为false，允许重复绑定<br />  delay: 3000, //延时3秒后执行adviceFunc<br />  rate: 0, //这个从源代码没有看懂起什么作用<br />  adviceMsg: false //这个从源代码没有看懂起什么作用<br />});</p>
		<p>
				<br />dojo.event.kwDisconnect</p>
		<p>用来解除使用kwConnect指定的绑定</p>
		<p>
				<br />模块：dojo.event.topic</p>
		<p>Topic机制与Advice机制都能够实现事件的绑定，但是显然,Topic更适合处理多重绑定。<br />发布主题，然后由用户订阅的机制就是一个典型的观察者模式</p>
		<p>dojo.event.topic.registerPublisher</p>
		<p>注册主题发布器</p>
		<p>Usage Example:</p>
		<p>dojo.event.topic.registerPublisher("myTopic", obj, "doOnClick2");</p>
		<p>
				<br />dojo.event.topic.subscribe</p>
		<p>订阅主题</p>
		<p>Usage Example:</p>
		<p>dojo.event.topic.subscribe("myTopic", "test"); //执行obj.doOnClick2()以后会自动执行test()</p>
		<p>
				<br />dojo.event.topic.unsubscribe</p>
		<p>取消订阅主题</p>
		<p>Usage Example:</p>
		<p>dojo.event.topic.unsubscribe("myTopic", "test");</p>
		<p>
				<br />dojo.event.topic.destroy</p>
		<p>删除主题，此主题所有的订阅都将失效</p>
		<p>Usage Example:</p>
		<p>dojo.event.topic.destroy("myTopic");</p>
		<p>
				<br />模块：dojo.event.browser</p>
		<p>dojo.event.browser.addListener</p>
		<p>增加监听器</p>
		<p>Usage Example:</p>
		<p>function listener()<br />{<br />  alert("ok");<br />}<br />dojo.event.browser.addListener(document, 'mousedown', listener); //事件名称可以加上"on"，也可以没有"on"<br />dojo.event.browser.addListener(document, 'onmousedown', listener, true); //capture为真表示不受上层元素的事件控制</p>
		<p>
				<br />dojo.event.browser.removeListener</p>
		<p>清除监听器(这个方法似乎是无效的)</p>
		<p>
				<br />dojo.event.browser.callListener</p>
		<p>调用监听器</p>
		<p>Usage Example:</p>
		<p>dojo.event.browser.callListener(listener, document);</p>
		<p>
				<br />dojo.event.browser.stopPropagation</p>
		<p>阻止Event传播</p>
		<p>Usage Example:</p>
		<p>dojo.event.browser.stopPropagation();</p>
		<p>
				<br />dojo.event.browser.preventDefault</p>
		<p>将当前事件的返回值设置为false</p>
		<p>Usage Example:</p>
		<p>dojo.event.browser.preventDefault();</p>
		<p>
				<br />dojo.event.browser.keys</p>
		<p>键定义:<br />  KEY_BACKSPACE: 8,<br />  KEY_TAB: 9,<br />  KEY_ENTER: 13,<br />  KEY_SHIFT: 16,<br />  KEY_CTRL: 17,<br />  KEY_ALT: 18,<br />  KEY_PAUSE: 19,<br />  KEY_CAPS_LOCK: 20,<br />  KEY_ESCAPE: 27,<br />  KEY_SPACE: 32,<br />  KEY_PAGE_UP: 33,<br />  KEY_PAGE_DOWN: 34,<br />  KEY_END: 35,<br />  KEY_HOME: 36,<br />  KEY_LEFT_ARROW: 37,<br />  KEY_UP_ARROW: 38,<br />  KEY_RIGHT_ARROW: 39,<br />  KEY_DOWN_ARROW: 40,<br />  KEY_INSERT: 45,<br />  KEY_DELETE: 46,<br />  KEY_LEFT_WINDOW: 91,<br />  KEY_RIGHT_WINDOW: 92,<br />  KEY_SELECT: 93,<br />  KEY_F1: 112,<br />  KEY_F2: 113,<br />  KEY_F3: 114,<br />  KEY_F4: 115,<br />  KEY_F5: 116,<br />  KEY_F6: 117,<br />  KEY_F7: 118,<br />  KEY_F8: 119,<br />  KEY_F9: 120,<br />  KEY_F10: 121,<br />  KEY_F11: 122,<br />  KEY_F12: 123,<br />  KEY_NUM_LOCK: 144,<br />  KEY_SCROLL_LOCK: 145</p>
		<p>
				<br />dojo.event.browser.currentEvent</p>
		<p>最近一次的Event，其属性包括：</p>
		<p>altKey  //检查alt键的状态，当alt键按下时，值为 true<br />button  //检查按下的鼠标键，0 没按键，1 按左键，2 按右键，3 按左右键，4 按中间键，5 按左键和中间键，6 按右键和中间键，7 按所有的键<br />  //这个属性仅用于onmousedown, onmouseup, 和 onmousemove 事件。对其他事件，不管鼠标状态如何，都返回 0（比如onclick）<br />clientX  //返回鼠标在窗口客户区域中的X坐标<br />clientY  //返回鼠标在窗口客户区域中的Y坐标<br />ctrlKey  //检查ctrl键的状态，当ctrl键按下时，值为 true <br />fromElement //检测 onmouseover 和 onmouseout 事件发生时，鼠标所离开的元素<br />keyCode  //检测键盘事件相对应的内码，仅当type为keydown,keyup,keypress时才有效<br />offsetX  //检查相对于触发事件的对象，鼠标位置的水平坐标<br />offsetY  //检查相对于触发事件的对象，鼠标位置的垂直坐标<br />propertyName //设置或返回元素的变化了的属性的名称，你可以通过使用 onpropertychange 事件，得到 propertyName 的值<br />screenX  //检测鼠标相对于用户屏幕的水平位置<br />screenY  //检测鼠标相对于用户屏幕的垂直位置<br />shiftKey //检查shift键的状态，当shift键按下时，值为true<br />srcElement //返回触发事件的元素<br />srcFilter //返回触发 onfilterchange 事件的滤镜<br />toElement //检测 onmouseover 和 onmouseout 事件发生时，鼠标所进入的元素<br />type  //返回没有“on”作为前缀的事件名，比如click, mousedown<br />x  //返回鼠标相对于css属性中有position属性的上级元素的x轴坐标。如果没有css属性中有position属性的上级元素，默认以BODY元素作为参考对象<br />y  //返回鼠标相对于css属性中有position属性的上级元素的y轴坐标。如果没有css属性中有position属性的上级元素，默认以BODY元素作为参考对象<br />target  //同srcElement<br />currentTarget<br />layerX  //同offsetX<br />layerY  //同offsetY<br />pageX  //无水平滚动条的情况下与clientX同<br />pageY  //无水平滚动条的情况下与clientY同<br />relatedTarget // 仅当type为mouseover,mouseout时才有效<br />keys  //与dojo.event.browser.keys相同，仅当type为keydown,keyup,keypress时才有效<br />charCode //键值，仅当type为keypress时才有效</p>
		<p>
				<br />dojo.event.browser.isEvent</p>
		<p>判断指定对象是否为event对象</p>
		<p>Usage Example:</p>
		<p>dojo.event.browser.isEvent(dojo.event.browser.currentEvent); //当dojo.event.browser.currentEvent不为null时返回true<br /></p>
<img src ="http://www.blogjava.net/CrazyJava/aggbug/72173.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/CrazyJava/" target="_blank">CrazyJava</a> 2006-09-27 08:58 <a href="http://www.blogjava.net/CrazyJava/articles/72173.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Dojo学习笔记(6. dojo.io.IO &amp; dojo.io.BrowserIO) </title><link>http://www.blogjava.net/CrazyJava/articles/72170.html</link><dc:creator>CrazyJava</dc:creator><author>CrazyJava</author><pubDate>Wed, 27 Sep 2006 00:57:00 GMT</pubDate><guid>http://www.blogjava.net/CrazyJava/articles/72170.html</guid><wfw:comment>http://www.blogjava.net/CrazyJava/comments/72170.html</wfw:comment><comments>http://www.blogjava.net/CrazyJava/articles/72170.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/CrazyJava/comments/commentRss/72170.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/CrazyJava/services/trackbacks/72170.html</trackback:ping><description><![CDATA[
		<p>模块：dojo.io.IO<br /><br />dojo.io.bind</p>
		<p>
				<br />处理请求取回需要的数据并处理</p>
		<p> </p>
		<p>这个函数是AJAX中最为重要和有用的函数，dojo.io.bind这个类是用来处理客户端与服务器间通讯的，需要通讯的参数由对象dojo.io.Request所定义，具体通讯的方法则由另外一个对象Transport所提供。</p>
		<p> </p>
		<p>因此，我们如果需要与服务器通讯，则应该定义一个Request对象，其中包括服务器地址及回调函数，例子中Requset都是以匿名对象方式定义的</p>
		<p>
				<br />虽然我们可以定义一个自己的Transport，但是显然不如直接利用现成的Transport方便。</p>
		<p>
				<br />Dojo里提供了一个同时兼容IE和Firefox的dojo.io.XMLHTTPTransport，但是这个对象位于dojo.io.BrowserIO，因此，一般require dojo.io.IO时，还应该require dojo.io.BrowserIO</p>
		<p> </p>
		<p>Usage Example:</p>
		<p>  dojo.io.bind({<br />    url: "<a href="http://localhost/test.html"><font color="#003366">http://localhost/test.html</font></a>", //要请求的页面地址<br />    mimetype: "text/html", //请求的页面的类型，应该设置为与你请求页面类型对应的mimetype，默认为 "text/plain"<br />    method："GET", //默认为"GET"<br />    sync: false, //默认为异步执行<br />    useCache: false, //默认为不使用页面缓存，注意这里的缓存并不是浏览器的缓存，而是Dojo自身所维护的页面缓存<br />    preventCache: false, //默认为启用浏览器缓存，否则将通过自动增加不同的参数来确保浏览器缓存失效<br />    timeoutSeconds: 3000,  //3秒后超时，如果为0则永不超时</p>
		<p>    load: function(type, data, evt) { alert(data); }, //type should be "load", data is that we wanted<br />    error: function(type, error) { alert(error.message); }, //error is dojo.io.Error<br />    timeout: function(type) { alert("请求超时！"); }<br />  });</p>
		<p>
				<br />  你也可以用一个handle来处理所有的事件</p>
		<p> </p>
		<p>  dojo.io.bind({<br />    url: "<a href="http://localhost/test.html"><font color="#003366">http://localhost/test.html</font></a>", //要请求的页面地址<br />    mimetype: "text/html", //请求的页面的类型，应该设置为与你请求页面类型对应的mimetype<br />    timeoutSeconds: 3000,  //3秒后超时，如果为0则永不超时<br />    handle: function(type, data, evt){<br />      if(type == "load") { alert(data); } //data is that we wanted<br />      else if (type == "error") { alert(data.message); } //data is the error object<br />      else { ; } //other events maybe need handled<br />    }<br />  });<br />  <br />  如果没有在Request中指定所用的transport，则Dojo会自动的在已注册的transports中寻找能够处理这个Request的transport，如果不能找到，则返回指定的Request。下面是一个指定了transport的例子:</p>
		<p>
				<br />  dojo.io.bind({<br />    url: "<a href="http://localhost/test.html"><font color="#003366">http://localhost/test.html</font></a>", //要请求的页面地址<br />    mimetype: "text/html", //请求的页面的类型，应该设置为与你请求页面类型对应的mimetype<br />    timeoutSeconds: 3000,  //3秒后超时，如果为0则永不超时<br />    transport: "XMLHTTPTransport",</p>
		<p>    load: function(type, data, evt) { alert(data); }, //type should be "load", data is that we wanted<br />    error: function(type, error) { alert(error.message); }, //error is dojo.io.Error<br />    timeout: function(type) { alert("请求超时！"); }<br />  });</p>
		<p>
				<br />  你还可以利用bind来得到一个JavaScript所定义的对象（注意mimetype必须要定义为"text/javascript"）</p>
		<p> </p>
		<p>  testObj = dojo.io.bind({<br />    url: "<a href="http://localhost/test.js"><font color="#003366">http://localhost/test.js</font></a>", //test.js里定义了一个对象<br />    mimetype: "text/javascript", //请求的页面的类型，应该设置为与你请求页面类型对应的mimetype<br />    timeoutSeconds: 3000,  //3秒后超时，如果为0则永不超时<br />    handle: function(type, data, evt){<br />      if(type == "load") { alert(data); } //data is a object or value<br />      else if (type == "error") { alert(data.message); } //data is the error object<br />      else { ; } //other events maybe need handled<br />    }<br />  });<br />  <br />  下面是一个Post的例子:<br />  <br />  dojo.io.bind({<br />    url: "<a href="http://localhost/test.aspx"><font color="#003366">http://localhost/test.aspx</font></a>", //要提交的页面地址<br />    mimetype: "text/html", //请求的页面的类型，应该设置为与你请求页面类型对应的mimetype<br />    timeoutSeconds: 3000,  //3秒后超时，如果为0则永不超时<br />    method: "POST",<br />    formNode: dojo.byId("myForm"), //指定提交的Form名称</p>
		<p>    load: function(type, data, evt) { alert(data); }, //type should be "load", data is that we wanted<br />    error: function(type, error) { alert(error.message); }, //error is dojo.io.Error<br />    timeout: function(type) { alert("请求超时！"); }<br />  });</p>
		<p> </p>
		<p>  另一个Post的例子(without Form to post):</p>
		<p>
				<br />  dojo.io.bind({<br />    url: "<a href="http://localhost/test.aspx"><font color="#003366">http://localhost/test.aspx</font></a>", //要提交的页面地址<br />    mimetype: "text/html", //请求的页面的类型，应该设置为与你请求页面类型对应的mimetype<br />    timeoutSeconds: 3000,  //3秒后超时，如果为0则永不超时<br />    method: "POST",<br />    content: {a: 1, b: 2}, //要提交的数据</p>
		<p>    load: function(type, data, evt) { alert(data); }, //type should be "load", data is that we wanted<br />    error: function(type, error) { alert(error.message); }, //error is dojo.io.Error<br />    timeout: function(type) { alert("请求超时！"); }<br />  });</p>
		<p>
				<br /> </p>
		<p>dojo.io.queueBind</p>
		<p>
				<br />  有时，我们需要一次发出多个网页请求，则应该使用dojo.io.queueBind，因为浏览器可能只允许同时发出有限个数的请求，如果是使用dojo.io.bind的话，则有可能会申请不到新的XMLHttp对象而导致出错。<br /><br />  用法与dojo.io.bind是一样的。</p>
		<p>
				<br /> </p>
		<p>dojo.io.argsFromMap</p>
		<p>
				<br />  用来把对象转换为URL的参数形式<br />  <br />Usage Example:</p>
		<p>
				<br />  dojo.io.argsFromMap({a:1,b:2,c:3}); //will return "c=3&amp;b=2&amp;a=1"<br />  dojo.io.argsFromMap({name:"名称",value:"值"},"utf"); //will return "value=%E5%80%BC&amp;name=%E5%90%8D%E7%A7%B0", 有中文的话应该指定utf格式，否则dojo.string.encodeAscii返回的编码是很怪异的<br />  dojo.io.argsFromMap({a:1,b:2,c:3}, "utf", "c"); //will return "b=2&amp;a=1&amp;c=3"，最后一个参数可以控制指定名称的值出现在最后<br />  </p>
		<p> </p>
		<p>dojo.io.setIFrameSrc</p>
		<p>
				<br />  设置IFrame的Src<br />  <br />Usage Example:</p>
		<p> </p>
		<p>  dojo.io.setIFrameSrc(dojo.byId("myFrame"), "<a href="http://localhost/test.htm"><font color="#003366">http://localhost/test.htm</font></a>"); //myFrame打开指定的网页<br />  dojo.io.setIFrameSrc(dojo.byId("myFrame"), "<a href="http://localhost/test.htm"><font color="#003366">http://localhost/test.htm</font></a>", true); //myFrame打开指定的网页，并覆盖浏览器的历史记录</p>
		<p>
				<br /> </p>
		<p>TODO: 补充一个kwArgs的例子，我之前在网上看见过，可是现在无论如何也找不到相关的页面了，只好以后在举例了</p>
		<p> </p>
		<p>
				<br />模块：dojo.io.BrowserIO</p>
		<p> </p>
		<p>基本上就提供了dojo.io.XMLHTTPTransport这个对象</p>
		<p>
				<br />XMLHTTPTransport一般能够满足我们的需求，但是其有几个限制：它不能传输文件，不能够成功执行跨域名的远程请求，并且不支持 file:// 这样的协议</p>
		<p>
				<br />因此，根据应用要求，我们可能会需要选用其它的transport: dojo.io.IframeTransport, dojo.io.repubsubTranport, dojo.io.ScriptSrcTransport, ShortBusTransport</p>
		<p> </p>
		<p>dojo.io.IframeTransport，用法与xmlhttp是一样的，其优点就是可以跨域，不存在任何的安全问题<br />如果Request指定的mimetype是text或javascript，返回的内容应该是放在第一个textarea里的内容，如果指定的mimetype是html，则IFrame里的html则是需要的内容。因为浏览器兼容的原因，IframeTransport不能正确处理返回类型为XML的请求。 </p>
		<p> </p>
		<p>关于Rpc，这个类似于Remoting的东西，也将在以后对其进行介绍。<br /></p>
<img src ="http://www.blogjava.net/CrazyJava/aggbug/72170.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/CrazyJava/" target="_blank">CrazyJava</a> 2006-09-27 08:57 <a href="http://www.blogjava.net/CrazyJava/articles/72170.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Dojo学习笔记(5. dojo.lang.array &amp; dojo.lang.func &amp; dojo.string.extras)</title><link>http://www.blogjava.net/CrazyJava/articles/72169.html</link><dc:creator>CrazyJava</dc:creator><author>CrazyJava</author><pubDate>Wed, 27 Sep 2006 00:55:00 GMT</pubDate><guid>http://www.blogjava.net/CrazyJava/articles/72169.html</guid><wfw:comment>http://www.blogjava.net/CrazyJava/comments/72169.html</wfw:comment><comments>http://www.blogjava.net/CrazyJava/articles/72169.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/CrazyJava/comments/commentRss/72169.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/CrazyJava/services/trackbacks/72169.html</trackback:ping><description><![CDATA[模块：dojo.lang.array<br /><br />dojo.lang.has<br />判断对象是否具有指定属性，不过这个方法有用吗，不如直接使用 if(name in obj)<br />Usage Example:<br />  dojo.lang.has(dojo.lang, "has"); //will return true<br /><br />dojo.lang.isEmpty<br />判断对象或数组是否为空<br />Usage Example:<br />  dojo.lang.isEmpty({a: 1}); //will return false<br />  dojo.lang.isEmpty([]); //will return true<br /><br />dojo.lang.map<br />调用指定的方法处理指定的数组或字符串<br />Usage Example:<br />  dojo.lang.map([1,2,3,4,5], function(x) { return x * x;}); //will return [1,4,9,16,25]<br /><br />dojo.lang.forEach<br />遍历指定的数组或字符串，并对其中的元素调用指定的方法<br />Usage Example:<br />  dojo.lang.forEach("abc", function(x) { alert(x); });<br /><br />dojo.lang.every<br />检查指定的数组是否全部满足指定方法的条件<br />Usage Example:<br />  dojo.lang.every([1,-2,3], function(x) { return x &gt; 0; }); //指定的数组不是全大于0的，因此返回false<br /><br />dojo.lang.some<br />检查指定的数组是否部分满足指定方法的条件<br />Usage Example:<br />  dojo.lang.some([1,-2,3], function(x) { return x &gt; 0; }); //指定的数组有大于0的元素，因此返回true<br /><br />dojo.lang.filter<br />根据指定的方法来过滤指定的数组<br />Usage Example:<br />  dojo.lang.filter([1,-2,3], function(x) { return x &gt; 0; }); //will return [1, 3]<br /><br />dojo.lang.unnest<br />把指定的参数或数组转换为一维数组<br />Usage Example:<br />  dojo.lang.unnest(1, 2, 3);  //will return [1, 2, 3]<br />  dojo.lang.unnest(1, [2, [3], [{4}]]); //will return [1, 2, 3, 4]<br /><br />dojo.lang.toArray<br />将输入转换为数组<br />Usage Example:<br />  function test()<br />  {<br />    return dojo.lang.toArray(arguments, 1);<br />  }<br />  test(1,2,3,4,5); //will return [2,3,4,5]<br /><br />模块：dojo.lang.func<br />dojo.lang.hitch<br />将指定的方法挂在指定的对象下并返回该方法<br />Usage Example:<br />  func = {test: function(s) {alert(s)}};<br />  dojo.lang.mixin(func, {demo: dojo.lang.hitch(func, "test")});<br />  func.demo("demo and test are same method");<br /><br />dojo.lang.forward<br />返回自身对象的指定名称的方法引用<br />Usage Example:<br />  func = {test: function(s) {alert(s)}, demo: dojo.lang.forward("test")};<br />  func.demo("demo and test are same method");<br /><br />dojo.lang.curry<br />What is curry? 请参阅这篇文章：<a href="http://www.svendtofte.com/code/curried_javascript/" target="_blank"><font color="#003366">http://www.svendtofte.com/code/curried_javascript/</font></a><br />Usage Example:<br />  function add(a, b)<br />  {<br />    return a + b;<br />  }<br />  dojo.lang.curry(null, add, 2, 3); //will return 5<br />  dojo.lang.curry(null, add, 2)(3); //will return 5<br />  dojo.lang.curry(null, add)(2)(3); //will return 5<br />  dojo.lang.curry(null, add)()(2)(3); //will return 5<br /><br />dojo.lang.curryArguments<br />与dojo.lang.curry类似，但是可以选择忽略掉前n个参数<br />Usage Example:<br />  function add(a, b)<br />  {<br />    return a + b;<br />  }<br />  dojo.lang.curryArguments(null, add, [1,2,3,4,5], 2); //will return 5 (= 2 + 3)<br />  <br />dojo.lang.tryThese<br />测试参数指定所有函数，并返回第一个返回值不为0的函数值<br />from seno: <br />dojo.lang.tryThese方法和prototype中的Try.these()方法是一样的， <br />xmlNode.text在一些浏览器中好用，但是xmlNode.textContent在另一些浏览器中正常工作。 使用Try.these()方法我们可以得到正常工作的那个方法的返回值。 <br />&lt;script&gt; <br />function getXmlNodeValue(xmlNode){ <br />return Try.these( <br />function() {return xmlNode.text;}, <br />function() {return xmlNode.textContent;) <br />); <br />} <br /><br />dojo.lang.delayThese<br />没看懂这个函数怎么用<br /><br />模块：dojo.string.extras<br /><br />dojo.string.substituteParams<br />类似C#中的String.Format函数<br />%{name}要保证与传入的对象的名称大小写一致，否则会出异常<br />Usage Example:<br />  dojo.string.substituteParams("%{0} - %{1} - %{2}", "a", "b", "c"); //will return "a - b - c"<br />  dojo.string.substituteParams("%{name}: %{value}", {name:"名称",value:"值"}); //will return "名称: 值"<br /><br />dojo.string.capitalize<br />把每一个单词的首字母大写<br />Usage Example:<br />  dojo.string.capitalize("show me love"); //will return "Show Me Love"<br /><br />dojo.string.isBlank<br />判断输入字符串是否为空或全是空白字符，如果传入对象为非字符串则也会返回true<br />Usage Example:<br />  dojo.string.isBlank("   1   "); //will return false<br /><br />dojo.string.escape<br />参数1为type，可传值为: xml/html/xhtml, sql, regexp/regex, javascript/jscript/js, ascii<br />将按照所传type对字符串进行编码<br />Usage Example:<br />  dojo.string.escape("html", "&lt;input type='text' value='' /&gt;"); //will return "&amp;lt;input <br />type='text' value='' /&amp;gt;"<br /><br />dojo.string.encodeAscii<br />dojo.string.escapeXml<br />dojo.string.escapeSql<br />dojo.string.escapeRegExp<br />dojo.string.escapeJavaScript<br />dojo.string.escapeString<br />这些函数也就是 dojo.string.escape 所调用的，这里无需多说<br /><br />dojo.string.summary<br />取得输入字符串的缩略版本<br />Usage Example:<br />  dojo.string.summary("1234567890", 5); //will return "12345..."<br /><br />dojo.string.endsWith<br />判断输入字符串是否以指定的字符串结尾<br />Usage Example:<br />  dojo.string.endsWith("abcde", "E");  //will return false<br />  dojo.string.endsWith("abcde", "E", true); //will return true<br /><br />dojo.string.endsWithAny<br />判断输入字符串是否以指定的任意字符串结尾<br />Usage Example:<br />  dojo.string.endsWithAny("abcde", "E", "e"); //will return true<br /><br />dojo.string.startsWith<br />判断输入字符串是否以指定的字符串开头<br />Usage Example:<br />  dojo.string.startsWith("abcde", "A");  //will return false<br />  dojo.string.startsWith("abcde", "A", true); //will return true<br /><br />dojo.string.startsWithAny<br />判断输入字符串是否以指定的任意字符串开头<br />Usage Example:<br />  dojo.string.startsWithAny("abcde", "A", "a"); //will return true<br /><br />dojo.string.has<br />判断输入字符串是否含有任意指定的字符串<br />Usage Example:<br />  dojo.string.has("abcde", "1", "23", "abc"); //will return true<br /><br />dojo.string.normalizeNewlines<br />按要求转换回车换行的格式<br />Usage Example:<br />  dojo.string.normalizeNewlines("a\r\nb\r\n", "\r"); //will return "a\rb\r"<br /><br />dojo.string.splitEscaped<br />将字符串按分隔符转换为数组<br />Usage Example:<br />  dojo.string.splitEscaped("a\\_b_c", '_'); //will return ["a\\_b", "c"] <img src ="http://www.blogjava.net/CrazyJava/aggbug/72169.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/CrazyJava/" target="_blank">CrazyJava</a> 2006-09-27 08:55 <a href="http://www.blogjava.net/CrazyJava/articles/72169.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Dojo学习笔记(3. Dojo的基础对象和方法)</title><link>http://www.blogjava.net/CrazyJava/articles/72166.html</link><dc:creator>CrazyJava</dc:creator><author>CrazyJava</author><pubDate>Wed, 27 Sep 2006 00:54:00 GMT</pubDate><guid>http://www.blogjava.net/CrazyJava/articles/72166.html</guid><wfw:comment>http://www.blogjava.net/CrazyJava/comments/72166.html</wfw:comment><comments>http://www.blogjava.net/CrazyJava/articles/72166.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/CrazyJava/comments/commentRss/72166.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/CrazyJava/services/trackbacks/72166.html</trackback:ping><description><![CDATA[这里所说的基础对象和方法是指的不Require任何包就能够调用的对象和方法 
<p><b>匿名函数</b></p><p>在开始前，我想介绍一下js里的匿名函数，这个在阅读dojo的源代码的时候，会发现到处都有匿名函数</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Codehighlighter1_12_26_Open_Image" onclick="this.style.display='none'; Codehighlighter1_12_26_Open_Text.style.display='none'; Codehighlighter1_12_26_Closed_Image.style.display='inline'; Codehighlighter1_12_26_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_12_26_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_12_26_Closed_Text.style.display='none'; Codehighlighter1_12_26_Open_Image.style.display='inline'; Codehighlighter1_12_26_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #000000">;(</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()</span><span id="Codehighlighter1_12_26_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_12_26_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />alert(</span><span style="COLOR: #000000">123</span><span style="COLOR: #000000">);<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000">)();<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">前面的分号是一个空语句，是可以不要的</span></div><p>匿名函数。一个匿名函数就是一个没有名字的函数。</p><p>你可以认为他们是一次性函数。当你只需要用一次某个函数时，他们就特别有用。通过使用匿名函数，没有必要把函数一直放在内存中，所以使用匿名函数更加有效率。</p><p>当然你也可以根本不定义函数，但是使用匿名函数可以把你的代码分段，就像C#中的#region一样</p><p><b>dojo.byId</b></p><p>非常有用的一个方法，与prototype.js的著名的$一样</p><p>似乎以前的版本还有dojo.byIdArray, 不过最新的版本已经找不到这个函数了(除了src\compat\0.2.2.js)</p><p>如果有多个元素具有指定的id，则返回的是一个集合</p><p>Usage Example:</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000"> dojo.byId(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">divTest</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /> dojo.byId(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">divTest</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, document);<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /> dojo.byId(document.getElementById(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">divTest</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));</span></div><p> </p><p><b>dojo.version</b></p><p>dojo的版本，可以取得major, minor, patch, flag和revision</p><p>这个对象没什么太大用处，除非你要根据dojo的版本选择执行你的代码</p><p><b>dojo.raise</b></p><p>抛出一个异常</p><p><b>dojo.errorToString</b></p><p>将异常转换为字符串</p><p>Usage Example:</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_6_53_Open_Image" onclick="this.style.display='none'; Codehighlighter1_6_53_Open_Text.style.display='none'; Codehighlighter1_6_53_Closed_Image.style.display='inline'; Codehighlighter1_6_53_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_6_53_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_6_53_Closed_Text.style.display='none'; Codehighlighter1_6_53_Open_Image.style.display='inline'; Codehighlighter1_6_53_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /> </span><span id="Codehighlighter1_6_53_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_6_53_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />    dojo.raise(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">打印失败</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Error(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">文件不存在</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /> }</span></span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /> </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(e)<br /><img id="Codehighlighter1_66_103_Open_Image" onclick="this.style.display='none'; Codehighlighter1_66_103_Open_Text.style.display='none'; Codehighlighter1_66_103_Closed_Image.style.display='inline'; Codehighlighter1_66_103_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_66_103_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_66_103_Closed_Text.style.display='none'; Codehighlighter1_66_103_Open_Image.style.display='inline'; Codehighlighter1_66_103_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /> </span><span id="Codehighlighter1_66_103_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_66_103_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />    alert(dojo.errorToString(e));<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /> }</span></span></div><p> </p><p><b>dojo.render</b></p><p>系统环境对象</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">dojo.render.name     返回 browser ，说明是工作在浏览器下<br />dojo.render.ver        返回 4</span><span style="COLOR: #000000"> ，似乎没什么用<br />dojo.os.win            返回true说明操作系统是Windows<br />dojo.os.linux           返回true说明操作系统是Linux<br />dojo.os.osx            返回true说明操作系统是MacOS<br />dojo.html.ie             返回true说明浏览器是Internet Explorer<br />dojo.html.opera             返回true说明浏览器是Opera<br />dojo.html.khtml             返回true说明浏览器是Konqueror<br />dojo.html.safari      返回true说明浏览器是Safari<br />dojo.html.moz        返回true说明浏览器是Mozilla FireFox<br />dojo.svg.capable     返回true说明浏览器支持svg<br />dojo.vml.capable     返回true说明浏览器支持vml<br />dojo.swf.capable    返回true说明浏览器支持swf<br />dojo.swt.capable     返回true说明浏览器支持swt (IBM开发的Standard Widget Toolkit)</span></div><p>如果dojo.html.ie为true的话</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">dojo.html.ie50         返回true说明浏览器是IE </span><span style="COLOR: #000000">5.0</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />dojo.html.ie55         返回true说明浏览器是IE </span><span style="COLOR: #000000">5.5</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />dojo.html.ie60         返回true说明浏览器是IE </span><span style="COLOR: #000000">6.0</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />dojo.html.ie70         返回true说明浏览器是IE </span><span style="COLOR: #000000">7.0</span></div><p> </p><p><b>dojo.addOnLoad</b></p><p>可以加载指定函数到window.load时执行，好处就是可以很方便的在window.load时执行多个函数</p><p>Usage Example:</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000"> dojo.addOnLoad(init);                    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">init是一个函数</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000"> dojo.addOnLoad(myObject, init);       </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">init是myObject对象的一个方法</span></div><p> </p><p><b>dojo.require</b></p><p>如果你想调用一个模块的对象的时候，你应该首先用dojo.require来请求这个模块，dojo会根据你的请求自动取得相应的js文件，并加载到内存中，这样你才能调用或创建其中的对象</p><p>dojo会自动维护已加载的模块列表，所以是不会重复加载模块的</p><p>Usage Example:</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000"> dojo.require(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">dojo.event</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);</span></div><p><b>dojo.requireIf=dojo.requireAfterIf</b></p><p>可以根据指定的条件来决定是否加载指定的模块</p><p>Usage Example:</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000"> dojo.requireIf(dojo.html.ie, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">dojo.html</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);   </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">如果dojo.html.ie为true，才会加载dojo.html模块</span></div><p> </p><p><b>dojo.provide</b></p><p>除非你要开发自己的模块，不然是用不到这个方法的，你可以这句看成是向系统注册这个模块名称</p><p>Usage Example:</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000"> dojo.provide(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">dojo.custom</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);</span></div><p><strong>dojo.exists</strong></p><p>判断指定对象是否具有指定名称的方法</p><p>Usage Example:</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000"> dojo.exists(dojo, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">exists</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return true</span></div><p> </p><p><b>dojo.hostenv.getText</b></p><p>返回指定url的内容</p><p>PS: 由于浏览器的安全限制，因此只能用于取得同域名的url的内容，否则会报告权限不够</p><p>Usage Example:</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000"> aSync </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">同步，确保返回内容不为null</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000"> silent </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">不抛出错误</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000"> s </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> dojo.hostenv.getText(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">http://www.google.com/</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, aSync, silent); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">返回Google的首页的HTML</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000"> alert(s);</span></div><p><b>dojo.debug</b></p><p>输出调试信息，如果在djConfig中指定了debugContainerId，则输出到指定的console容器中，否则直接document.write</p><p>所有的调试信息均以 DEBUG: 开头</p><p>Usage Example:</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000"> dojo.debug(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">这是调试信息</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);</span></div><p> </p><p><b>dojo.hostenv.println</b></p><p>与dojo.debug类似，不同的是，输出内容没有 DEBUG:</p><p>Usage Example:</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000"> dojo.hostenv.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">这是一般的输出信息</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);</span></div><p> </p><p><b>dojo.debugShallow</b></p><p>输出指定对象的全部信息(Shallow说明并不会遍历到下一级别的对象属性)以供调试</p><p>Usage Example:</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000"> dojo.debugShallow(dojo.render.html);</span></div><p> </p><p>以上全部是自己阅读源代码写的总结，如有错误，还请指明。</p><img src ="http://www.blogjava.net/CrazyJava/aggbug/72166.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/CrazyJava/" target="_blank">CrazyJava</a> 2006-09-27 08:54 <a href="http://www.blogjava.net/CrazyJava/articles/72166.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Dojo学习笔记(4. dojo.string &amp; dojo.lang) </title><link>http://www.blogjava.net/CrazyJava/articles/72168.html</link><dc:creator>CrazyJava</dc:creator><author>CrazyJava</author><pubDate>Wed, 27 Sep 2006 00:54:00 GMT</pubDate><guid>http://www.blogjava.net/CrazyJava/articles/72168.html</guid><wfw:comment>http://www.blogjava.net/CrazyJava/comments/72168.html</wfw:comment><comments>http://www.blogjava.net/CrazyJava/articles/72168.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/CrazyJava/comments/commentRss/72168.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/CrazyJava/services/trackbacks/72168.html</trackback:ping><description><![CDATA[
		<pre>
				<strong>模块：dojo.string.common / dojo.string</strong>
dojo.string.common 和 dojo.string 是一样的，只要require其中一个就可以使用以下方法
<strong>dojo.string.trim</strong>
去掉字符串的空白
Usage Example:
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">s </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> abc </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />dojo.string.trim(s);      </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return "abc"</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">dojo.string.trim(s, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);      </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return "abc"</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">dojo.string.trim(s, </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);      </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return "abc "</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">dojo.string.trim(s, </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return " abc"</span></div></pre>
		<pre>
				<strong>dojo.string.trimStart</strong>
去掉字符串开头的空白
Usage Example:
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">s </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> abc </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />dojo.string.trimStart(s);      </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return "abc "</span></div><strong>dojo.string.trimEnd</strong>
去掉字符串结尾的空白
Usage Example:
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">s </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> abc </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />dojo.string.trimEnd(s);            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return " abc"</span></div><strong>dojo.string.repeat</strong>
生成由同一字符(串)重复组成的字符串
Usage Example:
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">dojo.string.repeat(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return "aaaa"</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">dojo.string.repeat(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">1234</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return "1234-1234-1234"</span></div><strong>dojo.string.pad</strong>
使用字符补齐字符串
Usage Example:
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">dojo.string.pad(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">);            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return "000100"</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">dojo.string.pad(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);      </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return "000100"</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">dojo.string.pad(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);      </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return "100000"</span></div><strong>dojo.string.padLeft</strong>
使用字符补齐字符串开头
Usage Example:
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">dojo.string.padLeft(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">);            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return "000100"</span></div><strong>dojo.string.padRight</strong>
使用字符补齐字符串结尾
Usage Example:
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">dojo.string.padRight(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">);            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return "100000"</span></div><br /><br /><br /></pre>
		<pre>
				<strong>模块：dojo.lang.common / dojo.lang</strong>
dojo.lang.common 和 dojo.lang 是一样的，只要require其中一个就可以使用以下方法</pre>
		<pre>
				<strong>dojo.lang.mixin</strong>
将一个对象的方法和属性增加到另一个对象上
Usage Example:
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Codehighlighter1_9_70_Open_Image" onclick="this.style.display='none'; Codehighlighter1_9_70_Open_Text.style.display='none'; Codehighlighter1_9_70_Closed_Image.style.display='inline'; Codehighlighter1_9_70_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_9_70_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_9_70_Closed_Text.style.display='none'; Codehighlighter1_9_70_Open_Image.style.display='inline'; Codehighlighter1_9_70_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> s1 </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span id="Codehighlighter1_9_70_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" /></span><span><span style="COLOR: #000000">{name: </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">TestObj</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, test1: </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()</span><span id="Codehighlighter1_44_69_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_44_69_Open_Text"><span style="COLOR: #000000">{alert(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">this is test1!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);}</span></span><span style="COLOR: #000000">}</span><br /><img id="Codehighlighter1_81_138_Open_Image" onclick="this.style.display='none'; Codehighlighter1_81_138_Open_Text.style.display='none'; Codehighlighter1_81_138_Closed_Image.style.display='inline'; Codehighlighter1_81_138_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_81_138_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_81_138_Closed_Text.style.display='none'; Codehighlighter1_81_138_Open_Image.style.display='inline'; Codehighlighter1_81_138_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> s2 </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span id="Codehighlighter1_81_138_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_81_138_Open_Text"><span style="COLOR: #000000">{value: </span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">, test2: </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()</span><span id="Codehighlighter1_112_137_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_112_137_Open_Text"><span style="COLOR: #000000">{alert(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">this is test2!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);}</span></span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_148_149_Open_Image" onclick="this.style.display='none'; Codehighlighter1_148_149_Open_Text.style.display='none'; Codehighlighter1_148_149_Closed_Image.style.display='inline'; Codehighlighter1_148_149_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_148_149_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_148_149_Closed_Text.style.display='none'; Codehighlighter1_148_149_Open_Image.style.display='inline'; Codehighlighter1_148_149_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> d </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span id="Codehighlighter1_148_149_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_148_149_Open_Text"><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000">;<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />dojo.lang.mixin(d, s1, s2); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">执行后d就具备了s1和s2的所有属性和方法</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">d.test1();</span></div><strong>dojo.lang.extend</strong>
为指定类的原型扩展方法与属性
Usage Example:
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><strong><img id="Codehighlighter1_23_24_Open_Image" onclick="this.style.display='none'; Codehighlighter1_23_24_Open_Text.style.display='none'; Codehighlighter1_23_24_Closed_Image.style.display='inline'; Codehighlighter1_23_24_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_23_24_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_23_24_Closed_Text.style.display='none'; Codehighlighter1_23_24_Open_Image.style.display='inline'; Codehighlighter1_23_24_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></strong><span style="COLOR: #000000">TestClass </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">() </span><span id="Codehighlighter1_23_24_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_23_24_Open_Text"><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000">;<br /><img id="Codehighlighter1_55_103_Open_Image" onclick="this.style.display='none'; Codehighlighter1_55_103_Open_Text.style.display='none'; Codehighlighter1_55_103_Closed_Image.style.display='inline'; Codehighlighter1_55_103_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_55_103_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_55_103_Closed_Text.style.display='none'; Codehighlighter1_55_103_Open_Image.style.display='inline'; Codehighlighter1_55_103_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" />dojo.lang.extend(TestClass, </span><span id="Codehighlighter1_55_103_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_55_103_Open_Text"><span style="COLOR: #000000">{name: </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">demo</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, test: </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()</span><span id="Codehighlighter1_86_102_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_86_102_Open_Text"><span style="COLOR: #000000">{alert(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Test!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);}</span></span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000">);<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> o </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> TestClass();  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">TestClass本来是没有test方法的，但是extend以后就有test方法了</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">o.test();</span></div><strong>dojo.lang.find=dojo.lang.indexOf</strong>
查找指定对象在指定数组中的位置
Usage Example:
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> arr </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> [</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">];<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />dojo.lang.find(arr, </span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">);                  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return 1</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">dojo.lang.find(arr, </span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">, </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return 1</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">dojo.lang.find(arr, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return -1</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">dojo.lang.find(arr, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">);      </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return 1</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">dojo.lang.find(arr, </span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">, </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">, </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);      </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return 4</span></div><strong>dojo.lang.findLast=dojo.lang.lastIndexOf
</strong>查找指定对象在指定数组中的位置，从后往前查
Usage Example:
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> arr </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> [</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">];<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />dojo.lang.findLast(arr, </span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">);                  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return 4</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">dojo.lang.findLast(arr, </span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">, </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return 4</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">dojo.lang.findLast(arr, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return -1</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">dojo.lang.findLast(arr, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">);            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return 4</span></div><strong>dojo.lang.inArray</strong>
查找指定对象是否在指定数组中
Usage Example:
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> arr </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> [</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">];<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />dojo.lang.inArray(arr, </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);      </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return true</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">dojo.lang.inArray(arr, </span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">);      </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return false</span></div><strong>dojo.lang.isObject</strong>
判断输入的类型是否为对象
Usage Example:
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">dojo.lang.isObject(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> String());      </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return true</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">dojo.lang.isObject(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">123</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));      </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return false</span></div><strong>dojo.lang.isArray</strong>
判断输入的类型是否为数组
Usage Example:
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Codehighlighter1_18_26_Open_Image" onclick="this.style.display='none'; Codehighlighter1_18_26_Open_Text.style.display='none'; Codehighlighter1_18_26_Closed_Image.style.display='inline'; Codehighlighter1_18_26_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_18_26_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_18_26_Closed_Text.style.display='none'; Codehighlighter1_18_26_Open_Image.style.display='inline'; Codehighlighter1_18_26_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #000000">dojo.lang.isArray(</span><span id="Codehighlighter1_18_26_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_18_26_Open_Text"><span style="COLOR: #000000">{a:</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,b:</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000">);      </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return false</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">dojo.lang.isArray([</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">]);      </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return true</span></div><strong>dojo.lang.isFunction</strong>
判断输入的类型是否为函数
Usage Example:
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Codehighlighter1_32_33_Open_Image" onclick="this.style.display='none'; Codehighlighter1_32_33_Open_Text.style.display='none'; Codehighlighter1_32_33_Closed_Image.style.display='inline'; Codehighlighter1_32_33_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_32_33_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_32_33_Closed_Text.style.display='none'; Codehighlighter1_32_33_Open_Image.style.display='inline'; Codehighlighter1_32_33_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #000000">dojo.lang.isFunction(</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">() </span><span id="Codehighlighter1_32_33_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_32_33_Open_Text"><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000">);      </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return true</span></div><strong>dojo.lang.isString</strong>
判断输入的类型是否为字符串
Usage Example:
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">dojo.lang.isString(</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">);      </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return true</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">dojo.lang.isString(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);      </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return false</span></div><strong>dojo.lang.isAlien</strong>
判断输入的类型是否为系统函数
Usage Example:
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">dojo.lang.isAlien(isNaN);      </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return true</span></div><strong>dojo.lang.isBoolean</strong>
判断输入的类型是否为布尔类型
Usage Example:
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">dojo.lang.isBoolean(</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);      </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return true</span></div><strong><br />dojo.lang.isNumber</strong>
判断输入的类型是否为数值，根据注释所说，此函数使用不太可靠，但是可替换使用的系统函数isNaN也不太可靠<br /><strong><br />dojo.lang.isUndefined</strong>
判断输入是否为未定义，根据注释所说，此函数有可能会导致抛出异常，推荐使用 typeof foo == "undefined" 来判断</pre>
		<pre>
				<strong>
						<br />模块：dojo.lang.extras</strong>
				<strong>dojo.lang.setTimeout</strong>
延迟指定时间后执行指定方法
Usage Example:
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000"> onTime(msg)<br /><img id="Codehighlighter1_21_39_Open_Image" onclick="this.style.display='none'; Codehighlighter1_21_39_Open_Text.style.display='none'; Codehighlighter1_21_39_Closed_Image.style.display='inline'; Codehighlighter1_21_39_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_21_39_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_21_39_Closed_Text.style.display='none'; Codehighlighter1_21_39_Open_Image.style.display='inline'; Codehighlighter1_21_39_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_21_39_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_21_39_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />dojo.debug(msg)<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />dojo.lang.setTimeout(onTime, </span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">test</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">1秒后会输出调试信息"test"</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">dojo.lang.setTimeout(dojo, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">debug</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">test</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">1秒后会输出调试信息"test"</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span></div><strong>dojo.lang.getNameInObj</strong>
获得指定项目在指定对象中的名称
Usage Example:
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">dojo.lang.getNameInObj(dojo, dojo.debug);      </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return "debug"</span></div><strong>dojo.lang.shallowCopy</strong>
返回指定对象的浅表复制副本
Usage Example:
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Codehighlighter1_22_23_Open_Image" onclick="this.style.display='none'; Codehighlighter1_22_23_Open_Text.style.display='none'; Codehighlighter1_22_23_Closed_Image.style.display='inline'; Codehighlighter1_22_23_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_22_23_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_22_23_Closed_Text.style.display='none'; Codehighlighter1_22_23_Open_Image.style.display='inline'; Codehighlighter1_22_23_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #000000">dojo.lang.shallowCopy(</span><span id="Codehighlighter1_22_23_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_22_23_Open_Text"><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000">);    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return a 空对象</span></div><strong>dojo.lang.firstValued</strong>
返回第一个存在定义的参数
Usage Example:
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> a;<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />dojo.lang.firstValued(a,</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">);      </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">will return 2</span></div><br />以上全部是自己阅读源代码写的总结，如有错误，还请指明。
</pre>
<img src ="http://www.blogjava.net/CrazyJava/aggbug/72168.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/CrazyJava/" target="_blank">CrazyJava</a> 2006-09-27 08:54 <a href="http://www.blogjava.net/CrazyJava/articles/72168.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Dojo学习笔记(2. djConfig详解)</title><link>http://www.blogjava.net/CrazyJava/articles/71383.html</link><dc:creator>CrazyJava</dc:creator><author>CrazyJava</author><pubDate>Fri, 22 Sep 2006 12:59:00 GMT</pubDate><guid>http://www.blogjava.net/CrazyJava/articles/71383.html</guid><wfw:comment>http://www.blogjava.net/CrazyJava/comments/71383.html</wfw:comment><comments>http://www.blogjava.net/CrazyJava/articles/71383.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/CrazyJava/comments/commentRss/71383.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/CrazyJava/services/trackbacks/71383.html</trackback:ping><description><![CDATA[
		<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">djConfig</span>
		<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">是</span>
		<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">dojo</span>
		<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">内置的一个全局设置对象，其作用是可以通过其控制</span>
		<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">dojo</span>
		<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">的行为</span>
		<br />
		<p class="MsoNormal" style="BACKGROUND: white 0% 50%; TEXT-ALIGN: left; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">
						<br />
				</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">首先我们需要在引用</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">dojo.js</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">前声明</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">djConfig</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">对象，以便在加载</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">dojo.js</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">的时候才能够取得所设置的值，虽然在</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">0.3</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">版本以后</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">dojo</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">支持在加载后设置，但是强烈建议你把声明</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">djConfig</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">的代码作为第一段</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">script<br /><br /></span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">一个完整的</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">djConfig</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">对象定义如下（值均为</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">dojo</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">的默认值）</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">
						<?xml:namespace prefix = o /?>
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="BACKGROUND: rgb(238,238,238) 0% 50%; TEXT-ALIGN: left; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial" align="left">
				<span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">
						<?xml:namespace prefix = v /?>
						<v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600">
								<v:stroke joinstyle="miter">
								</v:stroke>
								<v:formulas>
										<v:f eqn="if lineDrawn pixelLineWidth 0">
										</v:f>
										<v:f eqn="sum @0 1 0">
										</v:f>
										<v:f eqn="sum 0 0 @1">
										</v:f>
										<v:f eqn="prod @2 1 2">
										</v:f>
										<v:f eqn="prod @3 21600 pixelWidth">
										</v:f>
										<v:f eqn="prod @3 21600 pixelHeight">
										</v:f>
										<v:f eqn="sum @0 0 1">
										</v:f>
										<v:f eqn="prod @6 1 2">
										</v:f>
										<v:f eqn="prod @7 21600 pixelWidth">
										</v:f>
										<v:f eqn="sum @8 21600 0">
										</v:f>
										<v:f eqn="prod @7 21600 pixelHeight">
										</v:f>
										<v:f eqn="sum @10 21600 0">
										</v:f>
								</v:formulas>
								<v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f">
								</v:path>
								<o:lock aspectratio="t" v:ext="edit">
								</o:lock>
						</v:shapetype>
						<v:shape id="_x0000_i1025" style="WIDTH: 8.25pt; HEIGHT: 12pt" alt="" type="#_x0000_t75">
								<v:imagedata o:href="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\chenyong\LOCALS~1\Temp\msohtml1\02\clip_image001.gif">
								</v:imagedata>
						</v:shape>&lt;!--[if !vml]--&gt; <img height="16" src="file:///C:/DOCUME%7E1/chenyong/LOCALS%7E1/Temp/msohtml1/02/clip_image001.gif" width="11" v:shapes="_x0000_i1025" /> &lt;!--[endif]--&gt; </span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">&lt;script type="text/javascript"&gt;<br /><v:shape id="Codehighlighter1_47_297_Open_Image" style="WIDTH: 8.25pt; HEIGHT: 12pt" alt="" type="#_x0000_t75" o:spid="_x0000_i1026"><v:imagedata o:href="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" src="file:///C:\DOCUME~1\chenyong\LOCALS~1\Temp\msohtml1\02\clip_image002.gif"></v:imagedata></v:shape>&lt;!--[if !vml]--&gt;<img height="16" src="file:///C:/DOCUME%7E1/chenyong/LOCALS%7E1/Temp/msohtml1/02/clip_image002.gif" width="11" v:shapes="Codehighlighter1_47_297_Open_Image" />&lt;!--[endif]--&gt;<v:shape id="Codehighlighter1_47_297_Closed_Image" style="WIDTH: 8.25pt; HEIGHT: 12pt" alt="" type="#_x0000_t75" o:spid="_x0000_i1027"><v:imagedata o:href="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" src="file:///C:\DOCUME~1\chenyong\LOCALS~1\Temp\msohtml1\02\clip_image003.gif"></v:imagedata></v:shape>&lt;!--[if !vml]--&gt;<img height="16" src="file:///C:/DOCUME%7E1/chenyong/LOCALS%7E1/Temp/msohtml1/02/clip_image003.gif" width="11" v:shapes="Codehighlighter1_47_297_Closed_Image" />&lt;!--[endif]--&gt;</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Verdana">var</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana"> djConfig = </span>
				<span lang="EN-US" style="BORDER-RIGHT: gray 1pt solid; PADDING-RIGHT: 0cm; BORDER-TOP: gray 1pt solid; DISPLAY: none; PADDING-LEFT: 0cm; FONT-SIZE: 10pt; BACKGROUND: white 0% 50%; PADDING-BOTTOM: 0cm; BORDER-LEFT: gray 1pt solid; COLOR: rgb(51,51,51); PADDING-TOP: 0cm; BORDER-BOTTOM: gray 1pt solid; FONT-FAMILY: Verdana; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">
						<v:shape id="_x0000_i1034" style="WIDTH: 11.25pt; HEIGHT: 15pt" alt="" type="#_x0000_t75">
								<v:imagedata o:href="http://www.cnblogs.com/Images/dot.gif" src="file:///C:\DOCUME~1\chenyong\LOCALS~1\Temp\msohtml1\02\clip_image004.gif">
								</v:imagedata>
						</v:shape>&lt;!--[if !vml]--&gt; <img height="20" src="file:///C:/DOCUME%7E1/chenyong/LOCALS%7E1/Temp/msohtml1/02/clip_image004.gif" width="15" v:shapes="_x0000_i1034" /> &lt;!--[endif]--&gt; </span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">{<br /><v:shape id="_x0000_i1028" style="WIDTH: 8.25pt; HEIGHT: 12pt" alt="" type="#_x0000_t75"><v:imagedata o:href="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" src="file:///C:\DOCUME~1\chenyong\LOCALS~1\Temp\msohtml1\02\clip_image005.gif"></v:imagedata></v:shape>&lt;!--[if !vml]--&gt;<img height="16" src="file:///C:/DOCUME%7E1/chenyong/LOCALS%7E1/Temp/msohtml1/02/clip_image005.gif" width="11" v:shapes="_x0000_i1028" />&lt;!--[endif]--&gt;    isDebug: </span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Verdana">false</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">,<br /><v:shape id="_x0000_i1029" style="WIDTH: 8.25pt; HEIGHT: 12pt" alt="" type="#_x0000_t75"><v:imagedata o:href="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" src="file:///C:\DOCUME~1\chenyong\LOCALS~1\Temp\msohtml1\02\clip_image005.gif"></v:imagedata></v:shape>&lt;!--[if !vml]--&gt;<img height="16" src="file:///C:/DOCUME%7E1/chenyong/LOCALS%7E1/Temp/msohtml1/02/clip_image005.gif" width="11" v:shapes="_x0000_i1029" />&lt;!--[endif]--&gt;    debugContainerId: "",<br /><v:shape id="_x0000_i1030" style="WIDTH: 8.25pt; HEIGHT: 12pt" alt="" type="#_x0000_t75"><v:imagedata o:href="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" src="file:///C:\DOCUME~1\chenyong\LOCALS~1\Temp\msohtml1\02\clip_image005.gif"></v:imagedata></v:shape>&lt;!--[if !vml]--&gt;<img height="16" src="file:///C:/DOCUME%7E1/chenyong/LOCALS%7E1/Temp/msohtml1/02/clip_image005.gif" width="11" v:shapes="_x0000_i1030" />&lt;!--[endif]--&gt;    allowQueryConfig: </span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Verdana">false</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">,<br /><v:shape id="_x0000_i1031" style="WIDTH: 8.25pt; HEIGHT: 12pt" alt="" type="#_x0000_t75"><v:imagedata o:href="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" src="file:///C:\DOCUME~1\chenyong\LOCALS~1\Temp\msohtml1\02\clip_image005.gif"></v:imagedata></v:shape>&lt;!--[if !vml]--&gt;<img height="16" src="file:///C:/DOCUME%7E1/chenyong/LOCALS%7E1/Temp/msohtml1/02/clip_image005.gif" width="11" v:shapes="_x0000_i1031" />&lt;!--[endif]--&gt;    baseScriptUri: "",<br /><v:shape id="_x0000_i1032" style="WIDTH: 8.25pt; HEIGHT: 12pt" alt="" type="#_x0000_t75"><v:imagedata o:href="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" src="file:///C:\DOCUME~1\chenyong\LOCALS~1\Temp\msohtml1\02\clip_image005.gif"></v:imagedata></v:shape>&lt;!--[if !vml]--&gt;<img height="16" src="file:///C:/DOCUME%7E1/chenyong/LOCALS%7E1/Temp/msohtml1/02/clip_image005.gif" width="11" v:shapes="_x0000_i1032" />&lt;!--[endif]--&gt;    parseWidgets: </span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Verdana">true</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">
						<br />
						<v:shape id="_x0000_i1033" style="WIDTH: 8.25pt; HEIGHT: 12pt" alt="" type="#_x0000_t75">
								<v:imagedata o:href="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" src="file:///C:\DOCUME~1\chenyong\LOCALS~1\Temp\msohtml1\02\clip_image005.gif">
								</v:imagedata>
						</v:shape>&lt;!--[if !vml]--&gt; <img height="16" src="file:///C:/DOCUME%7E1/chenyong/LOCALS%7E1/Temp/msohtml1/02/clip_image005.gif" width="11" v:shapes="_x0000_i1033" /> &lt;!--[endif]--&gt;    searchIds: [],<br /><v:shape id="_x0000_i1035" style="WIDTH: 8.25pt; HEIGHT: 12pt" alt="" type="#_x0000_t75"><v:imagedata o:href="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" src="file:///C:\DOCUME~1\chenyong\LOCALS~1\Temp\msohtml1\02\clip_image005.gif"></v:imagedata></v:shape>&lt;!--[if !vml]--&gt;<img height="16" src="file:///C:/DOCUME%7E1/chenyong/LOCALS%7E1/Temp/msohtml1/02/clip_image005.gif" width="11" v:shapes="_x0000_i1035" />&lt;!--[endif]--&gt;    baseRelativePath: "",<br /><v:shape id="_x0000_i1036" style="WIDTH: 8.25pt; HEIGHT: 12pt" alt="" type="#_x0000_t75"><v:imagedata o:href="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" src="file:///C:\DOCUME~1\chenyong\LOCALS~1\Temp\msohtml1\02\clip_image005.gif"></v:imagedata></v:shape>&lt;!--[if !vml]--&gt;<img height="16" src="file:///C:/DOCUME%7E1/chenyong/LOCALS%7E1/Temp/msohtml1/02/clip_image005.gif" width="11" v:shapes="_x0000_i1036" />&lt;!--[endif]--&gt;    libraryScriptUri: "",<br /><v:shape id="_x0000_i1037" style="WIDTH: 8.25pt; HEIGHT: 12pt" alt="" type="#_x0000_t75"><v:imagedata o:href="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" src="file:///C:\DOCUME~1\chenyong\LOCALS~1\Temp\msohtml1\02\clip_image005.gif"></v:imagedata></v:shape>&lt;!--[if !vml]--&gt;<img height="16" src="file:///C:/DOCUME%7E1/chenyong/LOCALS%7E1/Temp/msohtml1/02/clip_image005.gif" width="11" v:shapes="_x0000_i1037" />&lt;!--[endif]--&gt;    iePreventClobber: </span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Verdana">false</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">,<br /><v:shape id="_x0000_i1038" style="WIDTH: 8.25pt; HEIGHT: 12pt" alt="" type="#_x0000_t75"><v:imagedata o:href="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" src="file:///C:\DOCUME~1\chenyong\LOCALS~1\Temp\msohtml1\02\clip_image005.gif"></v:imagedata></v:shape>&lt;!--[if !vml]--&gt;<img height="16" src="file:///C:/DOCUME%7E1/chenyong/LOCALS%7E1/Temp/msohtml1/02/clip_image005.gif" width="11" v:shapes="_x0000_i1038" />&lt;!--[endif]--&gt;    ieClobberMinimal: </span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Verdana">true</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">,<br /><v:shape id="_x0000_i1039" style="WIDTH: 8.25pt; HEIGHT: 12pt" alt="" type="#_x0000_t75"><v:imagedata o:href="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" src="file:///C:\DOCUME~1\chenyong\LOCALS~1\Temp\msohtml1\02\clip_image005.gif"></v:imagedata></v:shape>&lt;!--[if !vml]--&gt;<img height="16" src="file:///C:/DOCUME%7E1/chenyong/LOCALS%7E1/Temp/msohtml1/02/clip_image005.gif" width="11" v:shapes="_x0000_i1039" />&lt;!--[endif]--&gt;    preventBackButtonFix: </span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Verdana">true</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">,<br /><v:shape id="_x0000_i1040" style="WIDTH: 8.25pt; HEIGHT: 12pt" alt="" type="#_x0000_t75"><v:imagedata o:href="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" src="file:///C:\DOCUME~1\chenyong\LOCALS~1\Temp\msohtml1\02\clip_image006.gif"></v:imagedata></v:shape>&lt;!--[if !vml]--&gt;<img height="16" src="file:///C:/DOCUME%7E1/chenyong/LOCALS%7E1/Temp/msohtml1/02/clip_image006.gif" width="11" v:shapes="_x0000_i1040" />&lt;!--[endif]--&gt;};<br /><v:shape id="_x0000_i1041" style="WIDTH: 8.25pt; HEIGHT: 12pt" alt="" type="#_x0000_t75"><v:imagedata o:href="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\chenyong\LOCALS~1\Temp\msohtml1\02\clip_image001.gif"></v:imagedata></v:shape>&lt;!--[if !vml]--&gt;<img height="16" src="file:///C:/DOCUME%7E1/chenyong/LOCALS%7E1/Temp/msohtml1/02/clip_image001.gif" width="11" v:shapes="_x0000_i1041" />&lt;!--[endif]--&gt;&lt;/script&gt;</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="BACKGROUND: white 0% 50%; TEXT-ALIGN: left; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial" align="left">
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">isDebug</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">是一个很有用的属性，顾名思义，如果设置为真，则所有</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">dojo.Debug</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">的输出有效，开发时应该设置为</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">true</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">，发布时应该设置为</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">false<br /><br />debugContainerId</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">同样也是与调试有关的，如果不指定的话，调试信息将会直接利用</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">document.write</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">输出，这样可能会破坏页面的整体布局，所以你可以指定任何一个可以作为容器的</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">html</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">元素的</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">id</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">作为调试信息输出容器</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">
						<br />
						<br />allowQueryConfig</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">，这个属性指明</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">dojo</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">是否允许从页面</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">url</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">的参数中读取</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">djConfig</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">中的相关属性，当值为</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">true</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">时，</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">dojo</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">会优先从</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">url</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">参数中读取</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">djConfig</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">的其他属性，比如</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">: <a href="http://server/dojoDemo.htm?djConfig.debugContainerId=divDebug"><span style="COLOR: rgb(153,153,102)">http://server/dojoDemo.htm?djConfig.debugContainerId=divDebug</span></a><br /><br />baseScriptUri</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">，一般不需要设置，</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">dojo</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">会自动根据你引用</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">dojo.js</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">的路径设置这个值，比如，</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">&lt;script type="text/javascript" src="../dojo/dojo.js"&gt;&lt;/script&gt;</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">，自动获取的值便是</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">../dojo/<br />ps: </span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">如果你有多个工程需要同时引用</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">dojo.js</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">的话，建议也把</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">dojo</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">当作一个独立的工程，引用的时候采用绝对路径就可以了</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">
						<br />
						<br />parseWidgets</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">，这个是可以控制</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">dojo</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">是否自动解析具有</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">dojoType</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">的</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">html</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">元素为对应的</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">widget</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">，如果你没有使用任何</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">Widget</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">，建议设置为</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">false</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">以加快</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">dojo</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">的加载速度</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">
						<br />
						<br />searchIds</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">，这是一个字符串数组，定义了所有需要解析为</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">widget</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">的</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">html</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">元素的</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">ID</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">，如果</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">ID</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">不在其中的</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">html</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">元素是不会被解析的，当数组为空数组时，则所有具有</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">dojoType</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">的元素都会被解析</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">
						<br />
						<br />
				</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">至于其它的属性，不是用处不大，就是不知道有什么作用</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">
						<br />
						<br />
				</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">在实际开发中，可以把</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">djConfig</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">的定义放在一个</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">js</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">文件里，并将其作为第一个引用的</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">js</span>
				<span style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: 宋体">文件，这样应该是最方便的。</span>
				<span lang="EN-US" style="FONT-SIZE: 9.5pt; COLOR: rgb(51,51,51); FONT-FAMILY: Verdana">
						<o:p>
						</o:p>
				</span>
		</p>
<img src ="http://www.blogjava.net/CrazyJava/aggbug/71383.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/CrazyJava/" target="_blank">CrazyJava</a> 2006-09-22 20:59 <a href="http://www.blogjava.net/CrazyJava/articles/71383.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Dojo学习笔记(1. 模块与包)</title><link>http://www.blogjava.net/CrazyJava/articles/71382.html</link><dc:creator>CrazyJava</dc:creator><author>CrazyJava</author><pubDate>Fri, 22 Sep 2006 12:58:00 GMT</pubDate><guid>http://www.blogjava.net/CrazyJava/articles/71382.html</guid><wfw:comment>http://www.blogjava.net/CrazyJava/comments/71382.html</wfw:comment><comments>http://www.blogjava.net/CrazyJava/articles/71382.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/CrazyJava/comments/commentRss/71382.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/CrazyJava/services/trackbacks/71382.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Intro:																				Dojo				是一个非常强大的面向对象的				JavaScript				的工具箱				, 				建议读者能够去补充一下				JavaScript				下如何使用				OO				进行编程的				, 				这对于你以后阅读				Dojo Source				有...&nbsp;&nbsp;<a href='http://www.blogjava.net/CrazyJava/articles/71382.html'>阅读全文</a><img src ="http://www.blogjava.net/CrazyJava/aggbug/71382.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/CrazyJava/" target="_blank">CrazyJava</a> 2006-09-22 20:58 <a href="http://www.blogjava.net/CrazyJava/articles/71382.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>dojo是什么与选择dojo的理由</title><link>http://www.blogjava.net/CrazyJava/articles/71373.html</link><dc:creator>CrazyJava</dc:creator><author>CrazyJava</author><pubDate>Fri, 22 Sep 2006 12:38:00 GMT</pubDate><guid>http://www.blogjava.net/CrazyJava/articles/71373.html</guid><wfw:comment>http://www.blogjava.net/CrazyJava/comments/71373.html</wfw:comment><comments>http://www.blogjava.net/CrazyJava/articles/71373.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/CrazyJava/comments/commentRss/71373.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/CrazyJava/services/trackbacks/71373.html</trackback:ping><description><![CDATA[What Is Dojo? <br /><br />Dojo 是一个用javascript语言实现的开源DHTML工具包。它是在几个项目捐助基础上建立起来的(nWidgets, Burstlib, f(m)), 这也是为什么叫它a \"unified\" toolkit的原因。Dojo的目标是解决开发DHTML应用程序遇到的那些，长期存在、历史问题。historical problems with DHTML 跨浏览器问题。<br />Dojo让你更容易 使web页面具有动态能力，或在任何稳健的支持javascript语言的环境中发挥作用。<br />a、利用dojo提供的组件，你可以提升你的web应用程序可用性、交互能力以及功能上的提高；<br />b、你也可以 更容易的建立degradeable user interfaces ？？，dojo提供小巧的 widgets ，animate transitions；<br />c、利用它的低级APIs和可兼容的代码，写出轻便的、单一风格（复杂）的javascript代码，Dojo的 event system, I/O APIs, and generic language enhancement form the basis of a powerful programming environment. <br />d、通过Dojo提供的工具，你可以为你的代码写命令行式的单元测试代码。<br />e、the Dojo package system使你自己的代码更容易维护，偶合性更低。<br /><br />Dojo 通过很少的代码完成了以上的功能。（以后可能我详细说说dojo的package system ，只需要三个js文件）。当你写脚本时，只需要包含很少的js文件（大小）。也可以选择的（包含）下载dojo提供的庞大的功能。Dojo provides MultiplePointsOfEntry, InterpreterIndependence, ForwardLookingAPIs, and focuses on ReducingBarriersToAdoption. <br />　　 dojo试图建立一种新的标签语言DojoML。目标是，在DojoML和javascript脚本语言不变的情况下，用不同的render方式展示数据， Renderings may be made available in several rendering contexts (such as SVG, or perhaps even the desktop or Flash)。（比较美好啊）更进一步，the DojoML 剖析器可以接受html和svg为输入，容易的建立DegradeableResponsiveApplications。 <br /><br /><br /><br /><br />选择dojo的理由<br /><br /><br />作者：dlee<br /><br /><br />有朋友对于我为什么会选择dojo很感兴趣，我就在这里介绍一下我选择它的理由，以便对于其他网友也能有所帮助。<br /><br />一、我选择dojo主要是出于以下几个理由：<br /><br />1.dojo是一个很好的基础架构。<br /><br />它可以非常有效地分离页面中的Structure、Presentation、Behaviour，这对于实现Ajax组件unobtrusive的目标非常有帮助。<br /><br />有人问：那么，同样是基础架构，你为什么不选择Prototype呢？<br />当然，Prototype对于开发一些Ajax效果也是非常有帮助的。但是Prototype的设计目标和dojo有很大的不同。<br />Prototype 的设计目标是扩充JavaScript的功能，使得可以以类似于Ruby的方式来编写JavaScript。 Prototype主要是对于JavaScript语言本身的一些底层的扩充，另外解决了一些跨浏览器的问题。但是Prototype还是太底层了，本身提供的功能非常少，基于它来建造复杂的Ajax组件（例如，一个功能完善的Grid组件）仍然非常困难。<br /><br />而Rico呢，仍然谈不上是一个框架，Rico和Scriptaculous都只是基于Prototype建造的Ajax效果库。 Rico的Live Grid太原始了，这也是我放弃Rico的一个原因，而且Rico这半年来就没有什么大的发展。<br /><br />我并不是要否定Prototype，而是经过考察发现Prototype很难支持我的目标。我的目标就是建造一个全面的Ajax组件库，dojo恰好对于支持这个目标非常有帮助。<br />dojo其实是一个组件模型，类似于Spring，用来支持大规模的组件化开发。组件模型的作用就是增强代码的重用，这对于提高开发效率是至关重要的。<br /><br />2.dojo的背后有强大的支持。<br /><br />dojo现在已经是众多开源框架的选择，包括：<br /><br />* WebWork<br />* Tapestry<br />* Eclipse ATF<br />* MyFaces<br /><br />这个列表还会随着时间的推移而扩大。<br />dojo的开发团队由Alex Russell领军，人数众多，力量非常强大。<br /><br />3.dojo的组件比较丰富，而且目前的开发非常活跃。<br /><br />这里是一些组件列表，也可以在这里提出新的组件需求。<br /><a href="http://dojo.jot.com/WidgetWishlist" target="_blank">http://dojo.jot.com/WidgetWishlist</a><br /><br />有一个正在开发的Grid组件，按照功能描述来看非常强大，值得高度注意。<br /><a href="http://dojo.jot.com/GridWidget" target="_blank">http://dojo.jot.com/GridWidget</a><br /><br />这样以来就可以减轻我的大量沉重的工作。 <br /><br />二、参加讨论：<br /><br />matrix论坛<br /><br />Ajaxcn<br /> <br /><br /><p id="TBPingURL">Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=880985</p><img src ="http://www.blogjava.net/CrazyJava/aggbug/71373.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/CrazyJava/" target="_blank">CrazyJava</a> 2006-09-22 20:38 <a href="http://www.blogjava.net/CrazyJava/articles/71373.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>