﻿<?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-资料整理-文章分类-javascript</title><link>http://www.blogjava.net/savage100/category/12709.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 12:08:19 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 12:08:19 GMT</pubDate><ttl>60</ttl><item><title>AJAX开发简略 (经典)</title><link>http://www.blogjava.net/savage100/articles/71340.html</link><dc:creator>谢玮</dc:creator><author>谢玮</author><pubDate>Fri, 22 Sep 2006 08:09:00 GMT</pubDate><guid>http://www.blogjava.net/savage100/articles/71340.html</guid><wfw:comment>http://www.blogjava.net/savage100/comments/71340.html</wfw:comment><comments>http://www.blogjava.net/savage100/articles/71340.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/savage100/comments/commentRss/71340.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/savage100/services/trackbacks/71340.html</trackback:ping><description><![CDATA[出处 <a href="http://dev2dev.bea.com.cn/bbsdoc/20051114125.html">http://dev2dev.bea.com.cn/bbsdoc/20051114125.html</a><br />另外一个  <a href="/emu/archive/2006/09/21/62318.html#70988">http://www.blogjava.net/emu/archive/2006/09/21/62318.html#70988</a><img src ="http://www.blogjava.net/savage100/aggbug/71340.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/savage100/" target="_blank">谢玮</a> 2006-09-22 16:09 <a href="http://www.blogjava.net/savage100/articles/71340.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSPackeger, 脚本库管理</title><link>http://www.blogjava.net/savage100/articles/69401.html</link><dc:creator>谢玮</dc:creator><author>谢玮</author><pubDate>Wed, 13 Sep 2006 08:41:00 GMT</pubDate><guid>http://www.blogjava.net/savage100/articles/69401.html</guid><wfw:comment>http://www.blogjava.net/savage100/comments/69401.html</wfw:comment><comments>http://www.blogjava.net/savage100/articles/69401.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/savage100/comments/commentRss/69401.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/savage100/services/trackbacks/69401.html</trackback:ping><description><![CDATA[
		<p>
				<font face="宋体">官方地址<a href="http://jspackager.sourceforge.net/doc/userguide/"><br />http://jspackager.sourceforge.net/doc/userguide/</a></font>
		</p>
<img src ="http://www.blogjava.net/savage100/aggbug/69401.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/savage100/" target="_blank">谢玮</a> 2006-09-13 16:41 <a href="http://www.blogjava.net/savage100/articles/69401.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ajax in Action 阅读笔记</title><link>http://www.blogjava.net/savage100/articles/66444.html</link><dc:creator>谢玮</dc:creator><author>谢玮</author><pubDate>Tue, 29 Aug 2006 07:09:00 GMT</pubDate><guid>http://www.blogjava.net/savage100/articles/66444.html</guid><wfw:comment>http://www.blogjava.net/savage100/comments/66444.html</wfw:comment><comments>http://www.blogjava.net/savage100/articles/66444.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/savage100/comments/commentRss/66444.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/savage100/services/trackbacks/66444.html</trackback:ping><description><![CDATA[Ajax 阅读笔记<img src ="http://www.blogjava.net/savage100/aggbug/66444.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/savage100/" target="_blank">谢玮</a> 2006-08-29 15:09 <a href="http://www.blogjava.net/savage100/articles/66444.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSON 入门与JavaScript提高(原创)</title><link>http://www.blogjava.net/savage100/articles/60754.html</link><dc:creator>谢玮</dc:creator><author>谢玮</author><pubDate>Sat, 29 Jul 2006 07:13:00 GMT</pubDate><guid>http://www.blogjava.net/savage100/articles/60754.html</guid><wfw:comment>http://www.blogjava.net/savage100/comments/60754.html</wfw:comment><comments>http://www.blogjava.net/savage100/articles/60754.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/savage100/comments/commentRss/60754.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/savage100/services/trackbacks/60754.html</trackback:ping><description><![CDATA[原文 Quick guide to somewhat advanced JavaScript tour of some OO features<br />出处 <a href="http://www.sergiopereira.com/articles/advjs.html">http://www.sergiopereira.com/articles/advjs.html</a><br /><br /><br />什么是JSON？ JavaScript Object Notation -------javascript对象符号,一个Ajax中砰然出现的新话题.其实它就是javascript中申明对象的方法。让我们来看一个示例<br /><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_125_Open_Image" onclick="this.style.display='none'; Codehighlighter1_12_125_Open_Text.style.display='none'; Codehighlighter1_12_125_Closed_Image.style.display='inline'; Codehighlighter1_12_125_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_12_125_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_12_125_Closed_Text.style.display='none'; Codehighlighter1_12_125_Open_Image.style.display='inline'; Codehighlighter1_12_125_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> myPet </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span id="Codehighlighter1_12_125_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"><br /></span><span id="Codehighlighter1_12_125_Open_Text"><span style="COLOR: #000000">{ <br />   color: 'black', <br />   leg_count: </span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">, <br />   communicate: </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(repeatCount)</span><span id="Codehighlighter1_78_123_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"></span><span id="Codehighlighter1_78_123_Open_Text"><span style="COLOR: #000000">{ <br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /></span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">repeatCount;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">) alert('Woof</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">');}</span></span><span style="COLOR: #000000"> <br />}</span></span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><br />这里我们就创建了一个对象引用，这个对象包含了2个属性(color,leg_count)和一个方法(communicate),<br />在myPet对象的列表中不难看出，这些属性和方法之间都是用逗号","分隔开来的。属性很好理解，而方法的创建则是由一个匿名function标记的。<br /><br />在该对象被创建以后并且以myPet变量声明了以后我们就可以这样使用了：<br /><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.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">alert('my pet is ' </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> myPet.color);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />alert('my pet has ' </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> myPet.legCount </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> ' legs');<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">if you are a dog, bark three times:</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">myPet.communicate(</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><br />大家可以看到，JSON可以漂亮地应用到javascript中任何一个地方，作为function参数、返回值、服务器响应...<br /><br /><font color="#000000" size="5">你理解了吗？function同样也是一个对象。<br />---------------------------------------------------------------<br /><font size="3">或许JS程序员中有些人从来就不这么认为，但是function确实也是一个Object。下面我们可以做个实验来验证一下，将你的function给你的另一个function做为参数传递，就传一个String一样。<br /><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_54_Open_Image" onclick="this.style.display='none'; Codehighlighter1_12_54_Open_Text.style.display='none'; Codehighlighter1_12_54_Closed_Image.style.display='inline'; Codehighlighter1_12_54_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_12_54_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_12_54_Closed_Text.style.display='none'; Codehighlighter1_12_54_Open_Image.style.display='inline'; Codehighlighter1_12_54_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> myDog </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span id="Codehighlighter1_12_54_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"></span><span id="Codehighlighter1_12_54_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_31_52_Open_Image" onclick="this.style.display='none'; Codehighlighter1_31_52_Open_Text.style.display='none'; Codehighlighter1_31_52_Closed_Image.style.display='inline'; Codehighlighter1_31_52_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_31_52_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_31_52_Closed_Text.style.display='none'; Codehighlighter1_31_52_Open_Image.style.display='inline'; Codehighlighter1_31_52_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    bark: </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()</span><span id="Codehighlighter1_31_52_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.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_31_52_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        alert('Woof</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">');<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img id="Codehighlighter1_70_148_Open_Image" onclick="this.style.display='none'; Codehighlighter1_70_148_Open_Text.style.display='none'; Codehighlighter1_70_148_Closed_Image.style.display='inline'; Codehighlighter1_70_148_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_70_148_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_70_148_Closed_Text.style.display='none'; Codehighlighter1_70_148_Open_Image.style.display='inline'; Codehighlighter1_70_148_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> myCat </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span id="Codehighlighter1_70_148_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.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_70_148_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_89_146_Open_Image" onclick="this.style.display='none'; Codehighlighter1_89_146_Open_Text.style.display='none'; Codehighlighter1_89_146_Closed_Image.style.display='inline'; Codehighlighter1_89_146_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_89_146_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_89_146_Closed_Text.style.display='none'; Codehighlighter1_89_146_Open_Image.style.display='inline'; Codehighlighter1_89_146_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    meow: </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()</span><span id="Codehighlighter1_89_146_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.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_89_146_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        alert('I am a lazy cat. I will not meow </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> you.');<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /><img id="Codehighlighter1_186_237_Open_Image" onclick="this.style.display='none'; Codehighlighter1_186_237_Open_Text.style.display='none'; Codehighlighter1_186_237_Closed_Image.style.display='inline'; Codehighlighter1_186_237_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_186_237_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_186_237_Closed_Text.style.display='none'; Codehighlighter1_186_237_Open_Image.style.display='inline'; Codehighlighter1_186_237_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000"> annoyThePet(petFunction)</span><span id="Codehighlighter1_186_237_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.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_186_237_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">let's see what the pet can do</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    petFunction();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">annoy the dog:</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">annoyThePet(myDog.bark);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">annoy the cat:</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">annoyThePet(myCat.meow);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><br />在这里我们传递了myDog.bark和myCat.meow给annoyThePet。注意它们后面都没有带括号<font color="#ff0000">"()"</font><font color="#000000">，如果不这样做的话我们传递的将不是"方法",而是该方法的返回值（在此例中为<font color="#ff0000">"Undefine"</font>）。<br /><br />如果你想我的懒猫学狗狗叫，你可以这样做：<br /><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.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">myCat.meow </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> myDog.bark;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />myCat.meow(); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">alerts 'Woof!'</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><br /> <br /></font><font color="#a52a2a" size="5">Arrays, items 和对象成员object members<br /><font color="#000000" size="3">请看下面2行<br /><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.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> a </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Array();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> b </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> [];<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><p></p></font></font></font></font> 
<p>你可以在array中添加items:<br /></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.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> a </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> ['first', 'second', 'third'];<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> v1 </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> a[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">];<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> v2 </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> a[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">];<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> v3 </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> a[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">];<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><p>但是你在声明时对索引不做数量限制，你将可以通过它的名字访问这个JS对象中的任何成员,就象这样，创建一个空的对象，然后就可以不停地添加了：<br /></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_10_11_Open_Image" onclick="this.style.display='none'; Codehighlighter1_10_11_Open_Text.style.display='none'; Codehighlighter1_10_11_Closed_Image.style.display='inline'; Codehighlighter1_10_11_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_10_11_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_10_11_Closed_Text.style.display='none'; Codehighlighter1_10_11_Open_Image.style.display='inline'; Codehighlighter1_10_11_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> obj </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span id="Codehighlighter1_10_11_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.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_10_11_Open_Text"><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000">; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">new, empty object</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">obj['member_1'] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> '</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000"> is the member value';<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />obj['flag_2'] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;<br /><img id="Codehighlighter1_136_156_Open_Image" onclick="this.style.display='none'; Codehighlighter1_136_156_Open_Text.style.display='none'; Codehighlighter1_136_156_Closed_Image.style.display='inline'; Codehighlighter1_136_156_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_136_156_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_136_156_Closed_Text.style.display='none'; Codehighlighter1_136_156_Open_Image.style.display='inline'; Codehighlighter1_136_156_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />obj['some_function'] </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_136_156_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.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_136_156_Open_Text"><span style="COLOR: #000000">{ </span><span id="Codehighlighter1_138_155_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">/**/</span><span id="Codehighlighter1_138_155_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"> do something </span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span></div>等价于:<br /><br /><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_10_114_Open_Image" onclick="this.style.display='none'; Codehighlighter1_10_114_Open_Text.style.display='none'; Codehighlighter1_10_114_Closed_Image.style.display='inline'; Codehighlighter1_10_114_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_10_114_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_10_114_Closed_Text.style.display='none'; Codehighlighter1_10_114_Open_Image.style.display='inline'; Codehighlighter1_10_114_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> obj </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span id="Codehighlighter1_10_114_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.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_10_114_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    member_1:'</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000"> is the member value',<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    flag_2: </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">,<br /><img id="Codehighlighter1_92_112_Open_Image" onclick="this.style.display='none'; Codehighlighter1_92_112_Open_Text.style.display='none'; Codehighlighter1_92_112_Closed_Image.style.display='inline'; Codehighlighter1_92_112_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_92_112_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_92_112_Closed_Text.style.display='none'; Codehighlighter1_92_112_Open_Image.style.display='inline'; Codehighlighter1_92_112_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    some_function: </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()</span><span id="Codehighlighter1_92_112_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.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_92_112_Open_Text"><span style="COLOR: #000000">{ </span><span id="Codehighlighter1_94_111_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">/**/</span><span id="Codehighlighter1_94_111_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"> do something </span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><p>在JS中，对象和关系型数组（hashes）两个概念通常是没有区别，下面的这两行代码是等价的：<br /></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.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />obj.some_function();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />obj['some_function']();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><p><br /><font color="#a52a2a" size="5">等了这么久，我可以拥有自己的Class了么？<br /><font color="#000000" size="3">OO的强大力量来自于类Class。当然了我们的JavaScript同样也可以做到这一点，请看吧:<br /></font></font></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.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #008000">//</span><span style="COLOR: #008000">defining a new class called Pet</span><span style="COLOR: #008000"><br /><img id="Codehighlighter1_66_107_Open_Image" onclick="this.style.display='none'; Codehighlighter1_66_107_Open_Text.style.display='none'; Codehighlighter1_66_107_Closed_Image.style.display='inline'; Codehighlighter1_66_107_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_66_107_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_66_107_Closed_Text.style.display='none'; Codehighlighter1_66_107_Open_Image.style.display='inline'; Codehighlighter1_66_107_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> Pet </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(petName, age)</span><span id="Codehighlighter1_66_107_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.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_66_107_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.name </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> petName;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.age </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> age;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">let's create an object of the Pet class</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> famousDog </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Pet('Santa\'s Little Helper', </span><span style="COLOR: #000000">15</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />alert('This pet is called ' </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> famousDog.name);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><br />但是我们如何能够将方法加到我们的Pet  Class中来呢。我们可以为我们所有的类定义一个prototype属性。prototype属性其实也是一个对象，它包含一个类所拥有的一切其他对象。甚至默认JS类（Date,String,Number）也可以拥有prototype对象，使得各种新的方法和属性能扩充其中，让基础类获得更多的特性。<br /><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_38_113_Open_Image" onclick="this.style.display='none'; Codehighlighter1_38_113_Open_Text.style.display='none'; Codehighlighter1_38_113_Closed_Image.style.display='inline'; Codehighlighter1_38_113_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_38_113_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_38_113_Closed_Text.style.display='none'; Codehighlighter1_38_113_Open_Image.style.display='inline'; Codehighlighter1_38_113_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #000000">Pet.prototype.communicate </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_38_113_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.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_38_113_Open_Text"><span style="COLOR: #000000">{ <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    alert('I </span><span style="COLOR: #0000ff">do</span><span style="COLOR: #000000"> not know what I should say, but my name is ' </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.name);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>别忘了，我们得先导入 prototype.js才行。<br />ps: 个人认为象下面创建类，可能更简洁一点。<br /><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.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> Pet </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Class.create();<br /><img id="Codehighlighter1_42_251_Open_Image" onclick="this.style.display='none'; Codehighlighter1_42_251_Open_Text.style.display='none'; Codehighlighter1_42_251_Closed_Image.style.display='inline'; Codehighlighter1_42_251_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_42_251_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_42_251_Closed_Text.style.display='none'; Codehighlighter1_42_251_Open_Image.style.display='inline'; Codehighlighter1_42_251_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />Pet.prototype </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span id="Codehighlighter1_42_251_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.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_42_251_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">our 'constructor'</span><span style="COLOR: #008000"><br /><img id="Codehighlighter1_100_144_Open_Image" onclick="this.style.display='none'; Codehighlighter1_100_144_Open_Text.style.display='none'; Codehighlighter1_100_144_Closed_Image.style.display='inline'; Codehighlighter1_100_144_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_100_144_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_100_144_Closed_Text.style.display='none'; Codehighlighter1_100_144_Open_Image.style.display='inline'; Codehighlighter1_100_144_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="COLOR: #000000">    initialize: </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(petName, age)</span><span id="Codehighlighter1_100_144_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.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_100_144_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.name </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> petName;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.age </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> age;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000">,<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img id="Codehighlighter1_173_249_Open_Image" onclick="this.style.display='none'; Codehighlighter1_173_249_Open_Text.style.display='none'; Codehighlighter1_173_249_Closed_Image.style.display='inline'; Codehighlighter1_173_249_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_173_249_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_173_249_Closed_Text.style.display='none'; Codehighlighter1_173_249_Open_Image.style.display='inline'; Codehighlighter1_173_249_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    communicate: </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()</span><span id="Codehighlighter1_173_249_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.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_173_249_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        alert('I </span><span style="COLOR: #0000ff">do</span><span style="COLOR: #000000"> not know what I should say, but my name is ' </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.name);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000">;    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><br /><font color="#a52a2a" size="5">将方法做为参数<br /><font color="#000000" size="3">如果你没有使用过支持closure的语言，象Ruby,C#，你会发现象这样的语法真是太有趣了:<br /><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.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> myArray </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> ['first', 'second', 'third'];<br /><img id="Codehighlighter1_79_143_Open_Image" onclick="this.style.display='none'; Codehighlighter1_79_143_Open_Text.style.display='none'; Codehighlighter1_79_143_Closed_Image.style.display='inline'; Codehighlighter1_79_143_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_79_143_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_79_143_Closed_Text.style.display='none'; Codehighlighter1_79_143_Open_Image.style.display='inline'; Codehighlighter1_79_143_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />myArray.each( </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(item, index)</span><span id="Codehighlighter1_79_143_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.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_79_143_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    alert('The item </span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000"> the position #' </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> index </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> ' is:' </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> item);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><br />未完带续.........</font></font><img src ="http://www.blogjava.net/savage100/aggbug/60754.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/savage100/" target="_blank">谢玮</a> 2006-07-29 15:13 <a href="http://www.blogjava.net/savage100/articles/60754.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>了解Prototype</title><link>http://www.blogjava.net/savage100/articles/60697.html</link><dc:creator>谢玮</dc:creator><author>谢玮</author><pubDate>Sat, 29 Jul 2006 02:46:00 GMT</pubDate><guid>http://www.blogjava.net/savage100/articles/60697.html</guid><wfw:comment>http://www.blogjava.net/savage100/comments/60697.html</wfw:comment><comments>http://www.blogjava.net/savage100/articles/60697.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/savage100/comments/commentRss/60697.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/savage100/services/trackbacks/60697.html</trackback:ping><description><![CDATA[
		<p>1、最简单的例子，了解 prototype：<br />(1) Number.add(num)：作用，数字相加<br />实现方法：Number.prototype.add = function(num){return(this+num);}<br />试验：alert((3).add(15)) -&gt; 显示 18<br /><br /><br />(2) Boolean.rev(): 作用，布尔变量取反<br />实现方法：Boolean.prototype.rev = function(){return(!this);}<br />试验：alert((true).rev()) -&gt; 显示 false<br /><br />是不是很简单？这一节仅仅是告诉读者又这么一种方法，这种方法是这样运用的。<br /><br /><br />2、已有方法的实现和增强，初识 prototype：<br />(1) Array.push(new_element)<br />　　作用：在数组末尾加入一个新的元素<br />　　实现方法：<br />　　Array.prototype.push = function(new_element){<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->this[this.length]=new_element;<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->return this.length;<br /><!--ubbcodetab-->    <!--/ubbcodetab-->}<br />　　让我们进一步来增强他，让他可以一次增加多个元素！<br />　　实现方法：<br />　　Array.prototype.pushPro = function() {<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->var currentLength = this.length;<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->for (var i = 0; i &lt; arguments.length; i++) {<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->this[currentLength + i] = arguments[i];<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->}<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->return this.length;<br /><!--ubbcodetab-->    <!--/ubbcodetab-->}<br />　　应该不难看懂吧？以此类推，你可以考虑一下如何通过增强 Array.pop 来实现删除任意位置，任意多个元素（具体代码就不再细说了）<br /><br />(2) String.length<br />　　作用：这实际上是 String 类的一个属性，但是由于 JavaScript 将全角、半角均视为是一个字符，在一些实际运用中可能会造成一定的问题，现在我们通过 prototype 来弥补这部不足。<br />　　实现方法：<br />　　String.prototype.Tlength = function(){<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->var arr=this.match(/[^\x00-\xff]/ig);<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->return this.length+(arr==null?0:arr.length);<br /><!--ubbcodetab-->    <!--/ubbcodetab-->}<br />　　试验：alert("aa啦啦aa".Tlength()) -&gt; 显示 8<br />　　这里用到了一些正则表达式的方法和全角字符的编码原理，由于属于另两个比较大的类别，本文不加说明，请参考相关材料。<br /><br /><br />3、新功能的实现，深入 prototype：在实际编程中所用到的肯定不只是已有方法的增强，更多的实行的功能的要求，下面我就举两个用 prototype 解决实际问题的例子：<br />(1) String.left()<br />　　问题：用过 vb 的应该都知道left函数，从字符串左边取 n 个字符，但是不足是将全角、半角均视为是一个字符，造成在中英文混排的版面中不能截取等长的字符串<br />　　作用：从字符串左边截取 n 个字符，并支持全角半角字符的区分<br />　　实现方法：<br />　　String.prototype.left = function(num,mode){<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->if(!/\d+/.test(num))return(this);<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->var str = this.substr(0,num);<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->if(!mode) return str;<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->var n = str.Tlength() - str.length;<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->num = num - parseInt(n/2);<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->return this.substr(0,num);<br /><!--ubbcodetab-->    <!--/ubbcodetab-->}<br />　　试验：alert("aa啦啦aa".left(4)) -&gt; 显示 aa啦啦<br /><!--ubbcodetab-->    <!--/ubbcodetab--> alert("aa啦啦aa".left(4,true)) -&gt; 显示 aa啦<br />　　本方法用到了上面所提到的String.Tlength()方法，自定义方法之间也能组合出一些不错的新方法呀！<br /><br />(2) Date.DayDiff()<br />　　作用：计算出两个日期型变量的间隔时间（年、月、日、周）<br />　　实现方法：<br />　　Date.prototype.DayDiff = function(cDate,mode){<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->try{<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->cDate.getYear();<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->}catch(e){<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->return(0);<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->}<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->var base =60*60*24*1000;<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->var result = Math.abs(this - cDate);<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->switch(mode){<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->case "y":<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->result/=base*365;<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->break;<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->case "m":<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->result/=base*365/12;<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->break;<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->case "w":<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->result/=base*7;<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->break;<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->default:<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->result/=base;<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->break;<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->}<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->return(Math.floor(result));<br /><!--ubbcodetab-->    <!--/ubbcodetab-->}<br />　　试验：alert((new Date()).DayDiff((new Date(2002,0,1)))) -&gt; 显示 329<br /><!--ubbcodetab-->    <!--/ubbcodetab--> alert((new Date()).DayDiff((new Date(2002,0,1)),"m")) -&gt; 显示 10<br />　　当然，也可以进一步扩充，得出响应的小时、分钟，甚至是秒。<br /><br />(3) Number.fact()<br />　　作用：某一数字的阶乘<br />　　实现方法：<br />　　Number.prototype.fact=function(){<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->var num = Math.floor(this);<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->if(num&lt;0)return NaN;<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->if(num==0 || num==1)<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->return 1;<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->else<br /><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab--><!--ubbcodetab-->    <!--/ubbcodetab-->return (num*(num-1).fact());<br /><!--ubbcodetab-->    <!--/ubbcodetab-->}<br />　　试验：alert((4).fact()) -&gt; 显示 24<br />　　这个方法主要是说明了递归的方法在 prototype 方法中也是可行的！<br /><br /><br /><br /><br /><br />扩展代码1:<br />&lt;script&gt;<br />/*<br /> This following code are designed and writen by Windy_sk &lt;<a href="mailto:seasonx@163.net">seasonx@163.net</a>&gt;<br /> You can use it freely, but u must held all the copyright items!<br />*/</p>
		<p>//测字符串实际长度<br />String.prototype.Tlength = function(){var arr=this.match(/[^\x00-\xff]/ig);return this.length+(arr==null?0:arr.length);}</p>
		<p>//字符串左取<br />String.prototype.left = function(num,mode){if(!/\d+/.test(num))return(this);var str = this.substr(0,num);if(!mode) return str;var n = str.Tlength() - str.length;num = num - parseInt(n/2);return this.substr(0,num);}</p>
		<p>//字符串右取<br />String.prototype.right = function(num,mode){if(!/\d+/.test(num))return(this);var str = this.substr(this.length-num);if(!mode) return str;var n = str.Tlength() - str.length;num = num - parseInt(n/2);return this.substr(this.length-num);}</p>
		<p>//字符串包含<br />String.prototype.GetCount = function(str,mode){return eval("this.match(/("+str+")/g"+(mode?"i":"")+").length");}</p>
		<p>//字符串去除两端空字符<br />String.prototype.Trim=function(){return this.replace(/(^\s*)|(\s*$)/g,"");}<br />String.prototype.Ltrim = function(){return this.replace(/(^\s*)/g, "");}<br />String.prototype.Rtrim = function(){return this.replace(/(\s*$)/g, "");}</p>
		<p>document.write("'aa啦啦aa'.Tlength() = " + "aa啦啦aa".Tlength());<br />document.write("&lt;br&gt;");<br />document.write("'aabbcc'.Tlength() = " + "aabbcc".Tlength());<br />document.write("&lt;br&gt;");<br />document.write("'aa啦啦aa'.left(4) = " + "aa啦啦aa".left(4));<br />document.write("&lt;br&gt;");<br />document.write("'aa啦啦aa'.left(4,true) = " + "aa啦啦aa".left(4,true));<br />document.write("&lt;br&gt;");<br />document.write("'aa啦啦aa'.right(4) = " + "aa啦啦aa".right(4));<br />document.write("&lt;br&gt;");<br />document.write("'aa啦啦aa'.right(4,true) = " + "aa啦啦aa".right(4,true));<br />document.write("&lt;br&gt;");<br />document.write("'abAcae'.GetCount('a') = " + "abAcae".GetCount("a"));<br />document.write("&lt;br&gt;");<br />document.write("'abAcae'.GetCount('a',true) = " + "abAcae".GetCount("a",true));<br />document.write("&lt;br&gt;");<br />document.write("'  abc  de    '.Ltrim() = " + "  abc  de    ".Ltrim());<br />document.write("&lt;br&gt;");<br />document.write("'  abc  de    '.Rtrim() = " + "  abc  de    ".Rtrim());<br />document.write("&lt;br&gt;");<br />document.write("'  abc  de    '.Trim() = " + "  abc  de    ".Trim());<br />&lt;/script&gt;<br /><br /><br /><br /><br />代码2:<br />/*Number Object*/<br />if(!Number.prototype.toFixed) {<br /> Number.prototype.toFixed = function(n) {<br />  with(Math) return round(Number(this)*pow(10,n))/pow(10,n)<br /> }<br />}<br />/*Array Object*/<br />if (!Array.prototype.pop) {<br /> Array.prototype.pop = function() {<br />  var lastElement = this[this.length-1];<br />  this.length = Math.max(this.length-1,0);<br />  return lastElement;<br /> }<br />}<br />if (!Array.prototype.push) {<br /> Array.prototype.push = function() {<br />  for(var i=0;i&lt;arguments.length;i++) {<br />   this[this.length]=arguments[i];<br />  }<br />  return this.length;<br /> }<br />}<br />if (!Array.prototype.shift) {<br /> Array.prototype.shift = function() {<br />  var firstElement = this[0];<br />  this.reverse();<br />  this.pop();<br />  this.reverse();<br />  return firstElement;<br /> }<br />}<br />if (!Array.prototype.splice) {<br /> Array.prototype.splice = function() {<br />  var start = arguments[0];<br />  var deleteCount = start+arguments[1];<br />  var deleteItem = this.slice(start,deleteCount);<br />  var beforeItem = this.slice(0,start);<br />  var afterItem = this.slice(deleteCount);<br />  this.length=beforeItem.length;<br />  var i;<br />  for (i=2;i&lt;arguments.length;this[this.length]=arguments[i++]);<br />  for (i=0;i&lt;afterItem.length;this[this.length]=afterItem[i++]);<br />  return deleteItem;<br /> }<br />}<br />if (!Array.prototype.unshift) {<br /> Array.prototype.unshift = function() {<br />  var arr = new Array();<br />  for (var i=0;i&lt;arguments.length;arr[i]=arguments[i++]);<br />  arr = arr.concat(this);<br />  this.length = 0;<br />  for (i=0;i&lt;arr.length;this[i]=arr[i++]);<br /> }<br />}<br /><br /><br /><br />代码3:<br />function getCookie(mainKey,subKey) {<br /> var reg = new RegExp("(^| )"+mainKey+"=([^;]*)(;|$)");<br /> var arr = document.cookie.match(reg);<br /> if (arguments.length == 2) {<br />  if (arr!=null)<br />   return key(subKey,arr[2]);<br />  else<br />   return null;<br /> } else if (arguments.length == 1) {<br />  if (arr!=null)<br />   return unescape(arr[2]);<br />  else<br />   return null;<br /> }</p>
		<p> function key(subKey,findWith) {<br />  var arr,reg = new RegExp("(^| |&amp;)"+subKey+"=([^&amp;]*)(&amp;|$)");<br />  var findWith = findWith?findWith:document.cookie;<br />  if (arr =  findWith.match(reg))<br />   return unescape(arr[2]);<br />  else<br />   return null;<br /> }<br />}</p>
		<p>function getQuery(name) {<br /> var reg = new RegExp("(^|&amp;)"+name+"=([^&amp;]*)(&amp;|$)");<br /> var r = location.search.substr(1).match(reg)<br /> if (r!=null) return unescape(r[2]);<br />}</p>
		<p>function DateAdd(strInterval, NumDay, dtDate) {<br /> var dtTmp = new Date(dtDate);<br /> if (isNaN(dtTmp)) dtTmp = new Date();<br /> switch (strInterval) {<br />  case "s":return new Date(Date.parse(dtTmp) + (1000 * NumDay));<br />  case "n":return new Date(Date.parse(dtTmp) + (60000 * NumDay));<br />  case "h":return new Date(Date.parse(dtTmp) + (3600000 * NumDay));<br />  case "d":return new Date(Date.parse(dtTmp) + (86400000 * NumDay));<br />  case "w":return new Date(Date.parse(dtTmp) + ((86400000 * 7) * NumDay));<br />  case "m":return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + NumDay, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());<br />  case "y":return new Date((dtTmp.getFullYear() + NumDay), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());<br /> }<br />}<br />// DateDiff("m","2002/12/1 00:00:00","2004/12/1 00:00:00")<br />function DateDiff(strInterval, dtStart, dtEnd) {<br /> var dtStart = new Date(dtStart);<br /> if (isNaN(dtStart)) dtStart = new Date();<br /> var dtEnd = new Date(dtEnd);<br /> if (isNaN(dtEnd)) dtEnd = new Date();<br /> switch (strInterval) {<br />  case "s":return parseInt((dtEnd - dtStart) / 1000);<br />  case "n":return parseInt((dtEnd - dtStart) / 60000);<br />  case "h":return parseInt((dtEnd - dtStart) / 3600000);<br />  case "d":return parseInt((dtEnd - dtStart) / 86400000);<br />  case "w":return parseInt((dtEnd - dtStart) / (86400000 * 7));<br />  case "m":return (dtEnd.getMonth()+1)+((dtEnd.getFullYear()-dtStart.getFullYear())*12) - (dtStart.getMonth()+1);<br />  case "y":return dtEnd.getFullYear() - dtStart.getFullYear();<br /> }<br />}<br />// b2s("11新浪网!@#程序员_+}{:&gt;&lt;")<br />function b2s(strng) {<br /> var Matches = strng.match(/[\x21-\x7e]/g);<br /> for (var i=0;i&lt;Matches.length;i++) {<br />  strng = strng.replace(Matches[i],String.fromCharCode(Matches[i].charCodeAt (0)+65248))<br /> }<br /> return strng;<br />}<br /><br /><br /><br /><br /><br /><br />出处:http://bbs.blueidea.com/viewthread.php?tid=716195&amp;page=</p>
<img src ="http://www.blogjava.net/savage100/aggbug/60697.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/savage100/" target="_blank">谢玮</a> 2006-07-29 10:46 <a href="http://www.blogjava.net/savage100/articles/60697.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL注入技术和跨站脚本攻击的检测 </title><link>http://www.blogjava.net/savage100/articles/58740.html</link><dc:creator>谢玮</dc:creator><author>谢玮</author><pubDate>Tue, 18 Jul 2006 06:02:00 GMT</pubDate><guid>http://www.blogjava.net/savage100/articles/58740.html</guid><wfw:comment>http://www.blogjava.net/savage100/comments/58740.html</wfw:comment><comments>http://www.blogjava.net/savage100/articles/58740.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/savage100/comments/commentRss/58740.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/savage100/services/trackbacks/58740.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: SQL																																注入技术和跨站脚本攻击的检测																																																Posted on 2005-11-10 09:02 loop				阅读				(136) 评论(1)  编辑 收藏收藏至365Key				所...&nbsp;&nbsp;<a href='http://www.blogjava.net/savage100/articles/58740.html'>阅读全文</a><img src ="http://www.blogjava.net/savage100/aggbug/58740.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/savage100/" target="_blank">谢玮</a> 2006-07-18 14:02 <a href="http://www.blogjava.net/savage100/articles/58740.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>精简注册表高级用法</title><link>http://www.blogjava.net/savage100/articles/58680.html</link><dc:creator>谢玮</dc:creator><author>谢玮</author><pubDate>Tue, 18 Jul 2006 01:24:00 GMT</pubDate><guid>http://www.blogjava.net/savage100/articles/58680.html</guid><wfw:comment>http://www.blogjava.net/savage100/comments/58680.html</wfw:comment><comments>http://www.blogjava.net/savage100/articles/58680.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/savage100/comments/commentRss/58680.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/savage100/services/trackbacks/58680.html</trackback:ping><description><![CDATA[
		<div class="ftitle">精简注册表高级用法——安全篇</div>
		<div>
		</div>
		<span class="fwriter">
		</span>
		<font class="fbody" id="zoom">
				<div id="p_content">
						<p>　　笔者发现现在介绍注册表的书籍的重点内容都讲解注册表关于个性化设置和系统优化等部分，而对于现实网络环境下日益猖獗的“黑客”行为、木马病毒以及那些令人恶心的恶意网站却关注甚少。笔者在此就注册表有关安全内容略加阐述，希望能起抛砖引玉之效。<br /><br />　　一、注册表与“黑客”行为<br /><br />　　“黑客”利用注册表主要包括：<br /><br />　　A：突破部分网管软件限制<br /><br />　　B：共享特定硬盘分区并运行指定程序<br /><br />　　C：启动黑客程序等三方面，而其中又属B、C两方面危害较大。<br /><br />　　1、突破部分网管软件限制<br /><br />　　现在流行的网管软件基本上都可以对PC机采取隐藏桌面和硬盘特定分区、禁止修改IE浏览器、隐藏“开始”工具栏，封锁注册表编辑器regedit.exe等诸多限制，有的网吧管理员甚至到了变态的地步。于是“自由的战士”便开始利用注册表进行大突围。<br /><br />　　<img src="http://www.people.com.cn/mediafile/200411/03/F2004110308384900000.jpg" border="1" /><br /><br />　　Word也可以给注册表解锁？没错！我们利用的是微软在Word中提供的“宏”，没想到吧？具体方法是：运行Word，然后编写如下面所示的这个“Unlock”宏，即可给注册表解锁：<br /><br />　　Sub Unlock()<br /><br />　　Dim RegPath As String<br /><br />　　RegPath = “HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System”<br /><br />　　System.PrivateProfileString(FileName:=“”,Section:=RegPath,Key:=“Disableregistrytools”)=“OK!”<br /><br />　　End Sub<br /><br />　　③用JavaScript、VBScript脚本语言解锁<br /><br />　　脚本语言解锁注册表，这个没的说，很多恶意网站就是靠它来锁住我们的注册表，现在我们反其道行之用它来解锁注册表。这里只给出JavaScript的核心代码。用记事本编辑如下内容的文件，保存为以.js为后缀名的任意文件，使用时双击就可以了。<br /><br />　　VAR WSHShell=WSCRIPT.CREA-TOBJEt(“WSCRIPT.SHELL”);<br /><br />　　WSHShell.Popup(“解锁注册表”);<br /><br />　　WSHShell.RegWrite(“HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\<br /><br />　　system\\DisableRegistryTools”, 0,“reg_dword”);<br /><br />　　需要注意：用JS对键值进行操作时要用两斜杠“\\”，并且要用“;”表示结束.<br /><br />　　④利用SCR文件给注册表解锁<br /><br />　　众所周知，SCR文件是屏保文件，SCR文件如何用来解锁注册表呢？方法是将注册表编辑器regedit.exe改名为Regedit.scr。然后，在桌面上点击鼠标右键，在弹出菜单中选择“属性”，在弹出的“显示属性”对话框中选中“屏幕保护程序”，在“屏幕保护程序”下拉列表框中找到Regedit这个“屏保文件”（图1），最后点击“预览”按纽，你会发现注册表编辑器成功地打开了。再更改相关键值，重启计算机后就可以给注册表解锁了！（记着把SCR文件改回哦！）<br /><br />　　<img src="http://www.people.com.cn/mediafile/200411/03/F2004110308402200000.jpg" border="1" /><br /><br />　　⑤用INF文件解锁<br /><br />　　在Windows中有一种后缀为INF的驱动安装文件，它实际上是一种脚本语言，通过解释来执行。它包含了设备驱动程序的所有安装信息，其中也有涉及修改注册表的相关语句，所以我们也可以利用INF文件对注册表解锁。<br /><br />　　[Version]<br /><br />　　Signature=“$CHICAGO$”<br /><br />　　[DefaultInstall]<br /><br />　　DelReg=UnLock<br /><br />　　[UnLock]<br /><br />　　HKCU,Software\Microsoft\Windows\CurrentVersion\Policies\<br /><br />　　System,Disableregistrytools,<br /><br />　　1,00,00,00,00<br /><br />　　将上面的内容另存为后缀名是.inf的文件，使用时只要右键点击它，在弹出菜单中选择“安装”即可给注册表解锁（如图2）。<br /><br />　　<img src="http://www.people.com.cn/mediafile/200411/03/F2004110308414900000.jpg" border="1" /><br /><br />　　首先我们打开记事本编辑reg文件如下：<br /><br />　　REGEDIT4<br /><br />　　[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows<br /><br />　　\CurrentVersion\Network\Lanman\C$]<br /><br />　　//这里我只共享了C盘，需要的可以再加<br /><br />　　“Path”=”C:\\”<br /><br />　　“Remark”=“ ”<br /><br />　　“Type”=dword:00000000<br /><br />　　“Flags”=dword:00000192<br /><br />　　“Parm1enc”=hex:<br /><br />　　“Parm2enc”=hex:<br /><br />　　然后另存为ShareDrives.reg文件。  再打开记事本，键入以下内容：<br /><br />　　[AutoRun]<br /><br />　　open=regedit /s ShareDrives.reg // 这里/s参数作用是导入注册表信息不显示任何提示<br /><br />　　再另存为AutoRun.inf文件。<br /><br />　　将这两个文件复制到对方共享出来的驱动盘根目录下，此后只要双击共享出来的驱动盘就会自动将ShareDrives.reg文件导入注册表，对方重启系统后C盘也就共享出来了。试想想，我们如果在 “open=…”句后添上木马名并将已配置好的木马服务端一起复制过去，以后会怎样？<br /><br />　　那么如何对付这种攻击呢？因为硬盘根目录下基本不需要AutoRun.inf文件来运行程序,因此我们可以采用一个一劳永逸的办法就是将硬盘的AutoRun功能完全关闭，这样即使硬盘根目录下有AutoRun.inf文件，操作系统也不会运行指定的程序。Win98为例，打开注册表编辑器，找到[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]主键，在注册表编辑器右侧框中可以看到有二进制值“NoDriveTypeAutoRun”,最后只需要将其数据数值由默认的“95 00 00 00”改为“9d 00 00 00”就可以了。其原理我就不在讲解了。<br /><br />　　3、启动黑客程序<br /><br />　　利用注册表启动黑客程序，目的是想每次开机启动时自动运行黑客程序，这同时也是很多木马病毒自启动常用的方法之一。普遍的方法是在将黑客程序名及参数添加到注册表相应的键值下，这样一来，每次开机时计算机将自动加载相应的注册表项，进而使黑客程序达到常驻内存的目的。另外还有更为隐蔽的方法会在“注册表与木马病毒”部分详细介绍。<br /><br />　　下面我们打开注册表编辑器，查看：<br /><br />　　HKEY_LOCAL_MACHINE\Software\Microsoft<br /><br />　　\Windows\CurrentVersion下所有以“run”开头的键值；<br /><br />　　HKEY_CURRENT_USER\Software\Microsoft<br /><br />　　\Windows\CurrentVersion下所有以“run”开头的键值；<br /><br />　　HKEY_USERS\.Default\Software\ Microsoft\Windows\CurrentVersion下所有以“run”开头的键值。<br /><br />　　如果发现未知不明的键值，可很有可能就是非法植入的程序。<br /><br />　　二、注册表与病毒<br /><br />　　下面我们来看看病毒是如何利用注册表的。一般，病毒会利用注册表来得到系统的基本信息，例如操作系统类型、系统安装的服务程序、IE、OutLook等应用软件的版本信息等等。这主要是为了探测系统及软件本身的漏洞然后加以利用。更主要的，病毒是想通过注册表实现黑客程序一样的目的——开机自启，常驻内存。只有这样，病毒才能感染其他机器和文件，才有机会进行“破坏”。<br /><br />　　打开注册表编辑器，我们找到：<br /><br />　　HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion下所有以“run”开头的键值；<br /><br />　　HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion下所有以“run”开头的键值；<br /><br />　　HKEY_USERS\.Default\Software\ Microsoft\Windows\CurrentVersion下所有以“run”开头的键值。<br /><br />　　大部分病毒都会悄悄的在上述三个位置安家。这时我们只需要删除相应的键值再删除掉病毒程序就可以了。<br /><br />　　此外，病毒还可以把自己注册为系统服务来达到更为隐蔽的开机自启的目的。其基本原理是利用在WIN2K中，“启动类型”设置为“自动”的服务，启动时系统就会自动运行，所以，病毒只需将自身添加到系统服务中，并将“启动类型”设置为“自动”就可以每次启动系统时都自动运行病毒程序。其在注册表中的位置如下：  [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ ServiceName\Parameters]<br /><br />　　“Application”= “C:\\winnt\\system32\\ ServiceName.exe<br /><br />　　其中：ServiceName就是病毒名。<br /><br />　　不过病毒将自身注册为系统的“服务”程序还有一个缺点，就是在“系统配置实用程序”（在“开始→运行”中执行“Msconfig”）的“启动”项和“服务”项中可以看得到。那么有没有比这更隐蔽的方法呢？答案是肯定的。在“开始→运行”中执行“Gpedit.msc”。 打开“组策略”，可看到“本地计算机策略”中有两个选项：“计算机配置”与“用户配置”，展开“用户配置→管理模板→系统→登录”，双击“在用户登录时运行这些程序”子项进行属性设置，选定“设置”项中的“已启用”项并单击“显示”按钮弹出“显示内容”窗口，再单击“添加”按钮，在“添加项目”窗口内的文本框中输入要自启动的程序的路径，单击“确定”按钮就完成了。如图3所示：<br /><br />　　<img src="http://www.people.com.cn/mediafile/200411/03/F2004110308435900000.jpg" border="1" /><br /><br />　　<img src="http://www.people.com.cn/mediafile/200411/03/F2004110308441600000.jpg" border="1" /><br /><br />　　其实恶意网站所使用的技术并不复杂，只要懂一点JavaScript、VBScript脚本语言编程和ActiveX控件原理就可以。所以在这我就不一一列举，而是重点介绍一下如何在技术上防范和杜绝这些恶意网站。<br /><br />　　常用方法是在IE设置中将ActiveX插件和控件、Java脚本等全部禁止。方法是：打开IE，点击[工具]→[Internet选项]→[安全]→[自定义级别]，在“安全设置”对话框中，将其中所有的ActiveX插件和控件以及与Java相关的组件全部禁止即可。如图4 所示：<br /><br />　　<img src="http://www.people.com.cn/mediafile/200411/03/F2004110308461500000.jpg" border="1" /><br /><br />　　另外我们还可以卸载WSH或升级到WSH5.6。WSH(Windows Script Host)是微软提供的一种基于32位Windows平台的、与语言无关的脚本解释机制。利用WSH，用户能够操纵WSH对象、ActiveX对象、注册表和文件系统，在NT环境下还可以利用WSH访问活动目录服务。<br /><br />　　卸载方法：进入“控制面板”，选择“添加/删除程序”，切换到“Windows安装程序”，选择“附件”，再选择“详细资料”中的Windows Scripting Host，最后点击“确定”即可卸载。<br /><br />　　其实，为了避免Windows对脚本不加限制的滥用，微软为WSH5.6采用了一种新的安全模型，使得脚本用户在运行脚本之前验证其真实性。脚本开发人员对其脚本进行签名，以免发生未经授权的修改。管理员可以强制实施严格的策略，确定哪些用户有权在本地或远程运行脚本。在Windows 2000中，签名验证策略是通过“本地安全策略”编辑器设置的。签名验证策略注册表项位于以下配置单元：HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows ScriptHost\Settings\TrustPolicy，该注册表项设置为以下某个REG_DWORD值：如果为0则运行所有的脚本，如果认为脚本不可信，则提示用户，此时键值可设为1，如果键值为2则只运行可信脚本。建议将该DWORD值设为1。<br /><br />　　四、小结<br /><br />　　有关注册表与安全的话题笔者就讲到这，笔者只是指出了这个安全话题的冰山一角，还有很多安全问题由于时间和篇幅的限制就不再一一说明，例如防范共享入侵和禁止空连接，防止ICMP重定向报文的攻击，防止SYN洪水攻击等等很多经典的安全问题都和注册表息息相连。笔者只是希望就此话题引起大家足够认识，并且在以后实际工作、学习中遇到问题能够拓开思路，灵活多变。最后需指出，技术只是解决问题的一个方面，对人的管理很多时候更为重要！</p>
				</div>
		</font>
		<table cellspacing="0" cellpadding="4" width="100%" align="center" border="0">
				<tbody>
						<tr>
								<td class="fblack" width="50%">
										<div id="p_origin">来源：<a href="http://www.yesky.com/">天极网Yesky</a></div>
								</td>
								<td class="fblack" align="right">
										<div id="p_editor">（责任编辑：陈健</div>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/savage100/aggbug/58680.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/savage100/" target="_blank">谢玮</a> 2006-07-18 09:24 <a href="http://www.blogjava.net/savage100/articles/58680.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用javascript实现关机功能</title><link>http://www.blogjava.net/savage100/articles/58402.html</link><dc:creator>谢玮</dc:creator><author>谢玮</author><pubDate>Sun, 16 Jul 2006 03:05:00 GMT</pubDate><guid>http://www.blogjava.net/savage100/articles/58402.html</guid><wfw:comment>http://www.blogjava.net/savage100/comments/58402.html</wfw:comment><comments>http://www.blogjava.net/savage100/articles/58402.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/savage100/comments/commentRss/58402.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/savage100/services/trackbacks/58402.html</trackback:ping><description><![CDATA[
		<p>在IE中实现关机<br />&lt;script language="Javascript"&gt;<br />var Application=new ActiveXObject('Shell.Application.1');<br />&lt;/script&gt;<br />&lt;br&gt;<br />&lt;button onclick=Application.ShutdownWindows();&gt;关机&lt;/button&gt;<br />    <br />&lt;button onclick=Application.Suspend();&gt;挂起&lt;/button&gt;<br /><br /><br /><br /><br />Windows关机命令<br /></p>
		<p>
				<br />如果你想出门，但电脑又正在进行工作，这时就要用到自动关机。大多数实现自动关机的方法都是使用一些第三方软件，这样不仅麻烦，而且为实现这个小功能而专门动用一个软件，显的小题大做了！其实Windows XP(Windows 2000也可以)自身就具备定时关机的功能，下面我们就来看看如何实现Windows XP的自动关机。</p>
		<p> </p>
		<p>Windows XP的关机是由Shutdown.exe程序来控制的，位于Windows＼System32文件夹中 </p>
		<p>　　。如果想让Windows 2000也实现同样的效果，可以把Shutdown.exe复制到系统目录下。　　 </p>
		<p>　　比如你的电脑要在22:00关机，可以选择"开始→运行"，输入"at 22:00 Shutdown -s"，这样，到了22点电脑就会出现"系统关机"对话框，默认有30秒钟的倒计时并提示你保存工作。如果你想以倒计时的方式关机，可以输入"Shutdown.exe -s -t 3600"，这里表示60分钟后自动关机，"3600"代表60分钟。 </p>
		<p>　　设置好自动关机后，如果想取消的话，可以在运行中输入"shutdown -a"。另外输入"shutdown -i"，则可以打开设置自动关机对话框，对自动关机进行设置。　　 </p>
		<p>　　Shutdown.exe的参数，每个都具有特定的用途，执行每一个都会产生不同的效果，比如"-s"就表示关闭本地计算机，"-a"表示取消关机操作，下面列出了更多参数，大家可以在Shutdown.exe中按需使用。 </p>
		<p>　　-f：强行关闭应用程序 </p>
		<p>　　-m ＼＼计算机名：控制远程计算机 </p>
		<p>　　-i：显示图形用户界面，但必须是Shutdown的第一个选项 </p>
		<p>　　-l：注销当前用户 </p>
		<p>　　-r：关机并重启 <br />　　 <br />　　-t时间：设置关机倒计时 </p>
		<p>　　-c "消息内容"：输入关机对话框中的消息内容(不能超127个字符)</p>
<img src ="http://www.blogjava.net/savage100/aggbug/58402.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/savage100/" target="_blank">谢玮</a> 2006-07-16 11:05 <a href="http://www.blogjava.net/savage100/articles/58402.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>常用站点</title><link>http://www.blogjava.net/savage100/articles/56979.html</link><dc:creator>谢玮</dc:creator><author>谢玮</author><pubDate>Thu, 06 Jul 2006 08:55:00 GMT</pubDate><guid>http://www.blogjava.net/savage100/articles/56979.html</guid><wfw:comment>http://www.blogjava.net/savage100/comments/56979.html</wfw:comment><comments>http://www.blogjava.net/savage100/articles/56979.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/savage100/comments/commentRss/56979.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/savage100/services/trackbacks/56979.html</trackback:ping><description><![CDATA[
		<font color="#7fffd4">
				<font size="6">
						<font color="#a52a2a">Ajax</font>
						<br />
				</font>
		</font>dojo         <a href="http://download.dojotoolkit.org/">http://download.dojotoolkit.org/</a><br />dwr          <a href="http://getahead.ltd.uk/dwr/download"><font color="#bbbb99" size="2">http://getahead.ltd.uk/dwr/download</font></a><br />prototype  <a href="http://prototype.conio.net/">http://prototype.conio.net/</a><br />prototype 在线学习指南   <a href="http://www.sergiopereira.com/articles/prototype.js.html">http://www.sergiopereira.com/articles/prototype.js.html</a><br />prototype 1.4中文手册(hot!!!)  <a href="http://thinhunan.cnblogs.com/archive/2006/04/01/DeveloperNotesForPrototype.html">http://thinhunan.cnblogs.com/archive/2006/04/01/DeveloperNotesForPrototype.html</a><br /><font color="#000000">wiki.script.aculo.us API <br /></font><a href="http://wiki.script.aculo.us/scriptaculous/show/Prototype">http://wiki.script.aculo.us/scriptaculous/show/Prototype</a><br />某prototype 笔记   <a href="https://compdoc2cn.dev.java.net/prototype/html/prototype.js.cn.html">https://compdoc2cn.dev.java.net/prototype/html/prototype.js.cn.html</a>  <br /><br />json  指南: Quick guide to somewhat advanced JavaScript  tour of some OO features<br /><a href="http://www.sergiopereira.com/articles/advjs.html">http://www.sergiopereira.com/articles/advjs.html</a><br />《征服Ajax web2.0详解》作者的blog<br /><a href="http://www.x2blog.cn/supNate/#sid.0/page.1/">http://www.x2blog.cn/supNate/#sid.0/page.1/</a><br /><font color="#a52a2a" size="5">Eclipse</font><br />eclipse     <a href="http://www.eclipse.org/">http://www.eclipse.org</a><br />csdn文章中心        <a href="http://kb.csdn.net/java/Articles/200606/7105353e-2f75-4398-9282-119b58937764.html">http://kb.csdn.net/java/Articles/200606/7105353e-2f75-4398-9282-119b58937764.html</a><br />JSEclipse 插件下载地址       <a href="http://www.apple.com/downloads/macosx/development_tools/jseclipse.html">http://www.apple.com/downloads/macosx/development_tools/jseclipse.html</a><br />JSEclipse 插件官方地址       <a href="http://www.interaktonline.com/">http://www.interaktonline.com/</a><br />视频教程                              <a href="http://www.interaktonline.com/Products/Eclipse/JSEclipse/Flash-Demos/">http://www.interaktonline.com/Products/Eclipse/JSEclipse/Flash-Demos/</a><br />java视线                 <a href="http://www.hibernate.org.cn/">http://www.hibernate.org.cn</a><br />曹晓刚满江红        <a href="http://www.redsaga.com/mambo/content/view/42/2/">http://www.redsaga.com/mambo/content/view/42/2/</a><br /><br />在线javascript手册   <a href="http://www.8esky.com/handbook/JavaScript/index.html">http://www.8esky.com/handbook/JavaScript/index.html</a><br />Mysql 手册         <a href="http://www.uplinux.com/download/doc/mysql/mysql4/index.html">http://www.uplinux.com/download/doc/mysql/mysql4/index.html</a><br />CVSclient入门     <a href="http://www.redsaga.com/CVS_newbie_win32/">http://www.redsaga.com/CVS_newbie_win32/</a><br />一个不错的Ajax Blog      <a href="https://blueprints.dev.java.net/ajax-faq-zh.html#ajax-libraries">https://blueprints.dev.java.net/ajax-faq-zh.html#ajax-libraries</a><br />框架视频教程   <a href="/oksonic/archive/2005/11/06/18370.aspx">http://www.blogjava.net/oksonic/archive/2005/11/06/18370.aspx</a><br /><font color="#a52a2a" size="5"><br />Java开源</font><br /><br />开源站点 <a href="http://sourceforge.net/new/">http://sourceforge.net/new/</a><br />一个国内的java开源站点 HOT  <a href="http://www.ideagrace.com/sf/bloggers/">http://www.ideagrace.com/sf/bloggers/</a> <br />java自由人   <a href="http://www.javayou.com/">http://www.javayou.com/</a><br />开发工具下载站点  <a href="http://www.topdownloads.org/software/view.php?id=75020">http://www.topdownloads.org/software/view.php?id=75020</a><img src ="http://www.blogjava.net/savage100/aggbug/56979.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/savage100/" target="_blank">谢玮</a> 2006-07-06 16:55 <a href="http://www.blogjava.net/savage100/articles/56979.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DWR使用指南</title><link>http://www.blogjava.net/savage100/articles/56322.html</link><dc:creator>谢玮</dc:creator><author>谢玮</author><pubDate>Mon, 03 Jul 2006 05:53:00 GMT</pubDate><guid>http://www.blogjava.net/savage100/articles/56322.html</guid><wfw:comment>http://www.blogjava.net/savage100/comments/56322.html</wfw:comment><comments>http://www.blogjava.net/savage100/articles/56322.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/savage100/comments/commentRss/56322.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/savage100/services/trackbacks/56322.html</trackback:ping><description><![CDATA[官方下载地址 <a href="http://getahead.ltd.uk/dwr/download">http://getahead.ltd.uk/dwr/download</a><br /><img src ="http://www.blogjava.net/savage100/aggbug/56322.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/savage100/" target="_blank">谢玮</a> 2006-07-03 13:53 <a href="http://www.blogjava.net/savage100/articles/56322.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用JAVASCRIPT实现可拖拽DIV</title><link>http://www.blogjava.net/savage100/articles/drag.html</link><dc:creator>谢玮</dc:creator><author>谢玮</author><pubDate>Thu, 29 Jun 2006 08:43:00 GMT</pubDate><guid>http://www.blogjava.net/savage100/articles/drag.html</guid><wfw:comment>http://www.blogjava.net/savage100/comments/55777.html</wfw:comment><comments>http://www.blogjava.net/savage100/articles/drag.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/savage100/comments/commentRss/55777.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/savage100/services/trackbacks/55777.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 代码如下:														&lt;				STYLE language				=				"				javascript				"				&gt;				LI 																								{    MARGIN						-						BOTTOM: 10px}												...&nbsp;&nbsp;<a href='http://www.blogjava.net/savage100/articles/drag.html'>阅读全文</a><img src ="http://www.blogjava.net/savage100/aggbug/55777.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/savage100/" target="_blank">谢玮</a> 2006-06-29 16:43 <a href="http://www.blogjava.net/savage100/articles/drag.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>