﻿<?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/hszdz/category/13099.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 01 Mar 2007 02:45:54 GMT</lastBuildDate><pubDate>Thu, 01 Mar 2007 02:45:54 GMT</pubDate><ttl>60</ttl><item><title> 能预览Flash也可以预览图片</title><link>http://www.blogjava.net/hszdz/articles/68708.html</link><dc:creator>爪哇之家</dc:creator><author>爪哇之家</author><pubDate>Sat, 09 Sep 2006 06:25:00 GMT</pubDate><guid>http://www.blogjava.net/hszdz/articles/68708.html</guid><description><![CDATA[
		<p>&lt;input type="file" name="file1" style="width:300'" class="tx1" value="" onchange="PreviewImg(this);"&gt;<br /> <br /> &lt;div style="width:400px;height:300px;border:1px solid #aaaaaa;overflow:auto" id="previewDiv"&gt;<br /> &lt;/div&gt;<br />&lt;script language="javascript"&gt;</p>

function PreviewImg(obj){<br />
  var div = document.getElementById("previewDiv");<br />
  if(obj.value=="" || div.childNodes.length&gt;0){<br />
    div.removeChild(div.firstChild);<br />
    if(obj.value=="")return;<br />
  }<br />
  var ext = obj.value.substring(obj.value.lastIndexOf(".")+1)<br />
  div.appendChild(getFlash(obj.value,ext));<br />
}<br />
function getFlash(src,ext){<br />
 var img;<br />
 switch(ext.toLowerCase()){<br />
  case "jpg":<br />
  case "jpeg":<br />
  case "bmp":<br />
  case "gif":<br />
  case "png":<br />
   img = document.createElement("img");<br />
   break;<br />
  case "swf":<br />
   img = document.createElement("embed");<br />
   img.type="application/x-shockwave-flash";<br />
   img.width=400;<br />
   img.height=300;<br />
   break;<br />
 }<br />
 img.src=src;<br />
 return img;<br />
}<br />
&lt;/script&gt;<img src ="http://www.blogjava.net/hszdz/aggbug/68708.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hszdz/" target="_blank">爪哇之家</a> 2006-09-09 14:25 <a href="http://www.blogjava.net/hszdz/articles/68708.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网页常用小技巧(JavaScript)</title><link>http://www.blogjava.net/hszdz/articles/63425.html</link><dc:creator>爪哇之家</dc:creator><author>爪哇之家</author><pubDate>Mon, 14 Aug 2006 03:20:00 GMT</pubDate><guid>http://www.blogjava.net/hszdz/articles/63425.html</guid><description><![CDATA[
		<p>1. oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键 <br />&lt;table border oncontextmenu=return(false)&gt;&lt;td&gt;no&lt;/table&gt; 可用于Table </p>
		<p>2. &lt;body onselectstart="return false"&gt; 取消选取、防止复制 </p>
		<p>3. onpaste="return false" 不准粘贴 </p>
		<p>4. oncopy="return false;" oncut="return false;" 防止复制 </p>
		<p>5. &lt;link rel="Shortcut Icon" href="favicon.ico"&gt; IE地址栏前换成自己的图标 </p>
		<p>6. &lt;link rel="Bookmark" href="favicon.ico"&gt; 可以在收藏夹中显示出你的图标 </p>
		<p>7. &lt;input style="ime-mode:disabled"&gt; 关闭输入法 </p>
		<p>8. 永远都会带着框架 <br />&lt;script language="JavaScript"&gt;&lt;!-- <br />if (window == top)top.location.href = "frames.htm"; //frames.htm为框架网页 <br />// --&gt;&lt;/script&gt; </p>
		<p>9. 防止被人frame <br />&lt;SCRIPT LANGUAGE=JAVASCRIPT&gt;&lt;!--  <br />if (top.location != self.location)top.location=self.location; <br />// --&gt;&lt;/SCRIPT&gt; </p>
		<p>10. 网页将不能被另存为 <br />&lt;noscript&gt;&lt;iframe src=*.html&gt;&lt;/iframe&gt;&lt;/noscript&gt;  </p>
		<p>11. &lt;input type=button value=查看网页源代码  <br />onclick="window.location = "view-source:"+ "<a href="http://www.pconline.com.cn/"><font color="#1d58d1">http://www.pconline.com.cn</font></a>""&gt; </p>
		<p>12.删除时确认 <br />&lt;a href="javascript:if(confirm("确实要删除吗?"))location="boos.asp?&amp;areyou=删除&amp;page=1""&gt;删除&lt;/a&gt;  </p>
		<p>13. 取得控件的绝对位置 <br />//Javascript <br />&lt;script language="Javascript"&gt; <br />function getIE(e){ <br />var t=e.offsetTop; <br />var l=e.offsetLeft; <br />while(e=e.offsetParent){ <br />t+=e.offsetTop; <br />l+=e.offsetLeft; <br />} <br />alert("top="+t+"/nleft="+l); <br />} <br />&lt;/script&gt; </p>
		<p>//VBScript <br />&lt;script language="VBScript"&gt;&lt;!-- <br />function getIE() <br />dim t,l,a,b <br />set a=document.all.img1 <br />t=document.all.img1.offsetTop <br />l=document.all.img1.offsetLeft <br />while a.tagName&lt;&gt;"BODY" <br />set a = a.offsetParent <br />t=t+a.offsetTop <br />l=l+a.offsetLeft <br />wend <br />msgbox "top="&amp;t&amp;chr(13)&amp;"left="&amp;l,64,"得到控件的位置" <br />end function <br />--&gt;&lt;/script&gt; </p>
		<p>14. 光标是停在文本框文字的最后 <br />&lt;script language="javascript"&gt; <br />function cc() <br />{ <br />var e = event.srcElement; <br />var r =e.createTextRange(); <br />r.moveStart("character",e.value.length); <br />r.collapse(true); <br />r.select(); <br />} <br />&lt;/script&gt; <br />&lt;input type=text name=text1 value="123" onfocus="cc()"&gt; </p>
		<p>15. 判断上一页的来源 <br />javascript: <br />document.referrer </p>
		<p>16. 最小化、最大化、关闭窗口 <br />&lt;object id=hh1 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"&gt;  <br />&lt;param name="Command" value="Minimize"&gt;&lt;/object&gt; <br />&lt;object id=hh2 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"&gt;  <br />&lt;param name="Command" value="Maximize"&gt;&lt;/object&gt; <br />&lt;OBJECT id=hh3 classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"&gt; <br />&lt;PARAM NAME="Command" VALUE="Close"&gt;&lt;/OBJECT&gt; <br />&lt;input type=button value=最小化 onclick=hh1.Click()&gt; <br />&lt;input type=button value=最大化 onclick=hh2.Click()&gt; <br />&lt;input type=button value=关闭 onclick=hh3.Click()&gt; <br />本例适用于IE </p>
		<p>17.屏蔽功能键Shift,Alt,Ctrl <br />&lt;script&gt; <br />function look(){  <br />if(event.shiftKey)  <br />alert("禁止按Shift键!"); //可以换成ALT　CTRL <br />}  <br />document.onkeydown=look;  <br />&lt;/script&gt; </p>
		<p>18. 网页不会被缓存 <br />&lt;META HTTP-EQUIV="pragma" CONTENT="no-cache"&gt; <br />&lt;META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate"&gt; <br />&lt;META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT"&gt; <br />或者&lt;META HTTP-EQUIV="expires" CONTENT="0"&gt; </p>
		<p>19.怎样让表单没有凹凸感？ <br />&lt;input type=text style="border:1 solid #000000"&gt;  <br />或 <br />&lt;input type=text style="border-left:none; border-right:none; border-top:none; border-bottom:  </p>
		<p>1 solid #000000"&gt;&lt;/textarea&gt; </p>
		<p>20.&lt;div&gt;&lt;span&gt;&amp;&lt;layer&gt;的区别？  <br />&lt;div&gt;(division)用来定义大段的页面元素，会产生转行  <br />&lt;span&gt;用来定义同一行内的元素，跟&lt;div&gt;的唯一区别是不产生转行  <br />&lt;layer&gt;是ns的标记，ie不支持，相当于&lt;div&gt; </p>
		<p>21.让弹出窗口总是在最上面: <br />&lt;body onblur="this.focus();"&gt; </p>
		<p>22.不要滚动条?  <br />让竖条没有:  <br />&lt;body style="overflow:scroll;overflow-y:hidden"&gt;  <br />&lt;/body&gt;  <br />让横条没有:  <br />&lt;body style="overflow:scroll;overflow-x:hidden"&gt;  <br />&lt;/body&gt;  <br />两个都去掉？更简单了  <br />&lt;body scroll="no"&gt;  <br />&lt;/body&gt;  </p>
		<p>23.怎样去掉图片链接点击后，图片周围的虚线？ <br />&lt;a href="#" onFocus="this.blur()"&gt;&lt;img src="logo.jpg" border=0&gt;&lt;/a&gt; </p>
		<p>24.电子邮件处理提交表单 <br />&lt;form name="form1" method="post" action="<a href="mailto:****@***.com"><font color="#1d58d1">mailto:****@***.com</font></a>" enctype="text/plain"&gt;  <br />&lt;input type=submit&gt; <br />&lt;/form&gt; </p>
		<p>25.在打开的子窗口刷新父窗口的代码里如何写？ <br />window.opener.location.reload() </p>
		<p>26.如何设定打开页面的大小 <br />&lt;body onload="top.resizeTo(300,200);"&gt; <br />打开页面的位置&lt;body onload="top.moveBy(300,200);"&gt; </p>
		<p>27.在页面中如何加入不是满铺的背景图片,拉动页面时背景图不动  <br />&lt;STYLE&gt;  <br />body  <br />{background-image:url(logo.gif); background-repeat:no-repeat;  <br />background-position:center;background-attachment: fixed}  <br />&lt;/STYLE&gt;  </p>
		<p>28. 检查一段字符串是否全由数字组成 <br />&lt;script language="Javascript"&gt;&lt;!-- <br />function checkNum(str){return str.match(//D/)==null} <br />alert(checkNum("1232142141")) <br />alert(checkNum("123214214a1")) <br />// --&gt;&lt;/script&gt; </p>
		<p>29. 获得一个窗口的大小 <br />document.body.clientWidth; document.body.clientHeight </p>
		<p>30. 怎么判断是否是字符 <br />if (/[^/x00-/xff]/g.test(s)) alert("含有汉字"); <br />else alert("全是字符"); </p>
		<p>31.TEXTAREA自适应文字行数的多少 <br />&lt;textarea rows=1 name=s1 cols=27 onpropertychange="this.style.posHeight=this.scrollHeight"&gt; <br />&lt;/textarea&gt; <br />32. 日期减去天数等于第二个日期 <br />&lt;script language=Javascript&gt; <br />function cc(dd,dadd) <br />{ <br />//可以加上错误处理 <br />var a = new Date(dd) <br />a = a.valueOf() <br />a = a - dadd * 24 * 60 * 60 * 1000 <br />a = new Date(a) <br />alert(a.getFullYear() + "年" + (a.getMonth() + 1) + "月" + a.getDate() + "日") <br />} <br />cc("12/23/2002",2) <br />&lt;/script&gt; </p>
		<p>33. 选择了哪一个Radio <br />&lt;HTML&gt;&lt;script language="vbscript"&gt; <br />function checkme() <br />for each ob in radio1 <br />if ob.checked then window.alert ob.value <br />next <br />end function <br />&lt;/script&gt;&lt;BODY&gt; <br />&lt;INPUT name="radio1" type="radio" value="style" checked&gt;Style <br />&lt;INPUT name="radio1" type="radio" value="barcode"&gt;Barcode <br />&lt;INPUT type="button" value="check" onclick="checkme()"&gt; <br />&lt;/BODY&gt;&lt;/HTML&gt; </p>
		<p>34.脚本永不出错 <br />&lt;SCRIPT LANGUAGE="JavaScript"&gt;  <br />&lt;!-- Hide  <br />function killErrors() {  <br />return true;  <br />}  <br />window.onerror = killErrors;  <br />// --&gt;  <br />&lt;/SCRIPT&gt; </p>
		<p>35.ENTER键可以让光标移到下一个输入框 <br />&lt;input onkeydown="if(event.keyCode==13)event.keyCode=9"&gt; </p>
		<p>36. 检测某个网站的链接速度： <br />把如下代码加入&lt;body&gt;区域中: <br />&lt;script language=Javascript&gt; <br />tim=1 <br />setInterval("tim++",100) <br />b=1 <br />var autourl=new Array() <br />autourl[1]="<a href="http://www.njcatv.net/"><font color="#1d58d1">www.njcatv.net</font></a>" <br />autourl[2]="javacool.3322.net" <br />autourl[3]="<a href="http://www.sina.com.cn/"><font color="#1d58d1">www.sina.com.cn</font></a>" <br />autourl[4]="<a href="http://www.nuaa.edu.cn/"><font color="#1d58d1">www.nuaa.edu.cn</font></a>" <br />autourl[5]="<a href="http://www.cctv.com/"><font color="#1d58d1">www.cctv.com</font></a>" <br />function butt(){ <br />document.write("&lt;form name=autof&gt;") <br />for(var i=1;i&lt;autourl.length;i++) <br />document.write("&lt;input type=text name=txt"+i+" size=10 value=测试中……&gt; =》&lt;input type=text  <br />name=url"+i+" size=40&gt; =》&lt;input type=button value=GO  </p>
		<p>onclick=window.open(this.form.url"+i+".value)&gt;&lt;br&gt;") <br />document.write("&lt;input type=submit value=刷新&gt;&lt;/form&gt;") <br />} <br />butt() <br />function auto(url){ <br />document.forms[0]["url"+b].value=url <br />if(tim&gt;200) <br />{document.forms[0]["txt"+b].value="链接超时"} <br />else <br />{document.forms[0]["txt"+b].value="时间"+tim/10+"秒"} <br />b++ <br />} <br />function run(){for(var i=1;i&lt;autourl.length;i++)document.write("&lt;img src=http://"+autourl+"/"+Math.random()+" width=1 height=1  </p>
		<p>onerror=auto("<a href="http://&quot;+autourl/"><font color="#1d58d1">http://"+autourl</font></a>+"")&gt;")} <br />run()&lt;/script&gt; </p>
		<p>37. 各种样式的光标 <br />auto ：标准光标 <br />default ：标准箭头 <br />hand ：手形光标 <br />wait ：等待光标 <br />text ：I形光标 <br />vertical-text ：水平I形光标 <br />no-drop ：不可拖动光标 <br />not-allowed ：无效光标 <br />help ：?帮助光标 <br />all-scroll ：三角方向标 <br />move ：移动标 <br />crosshair ：十字标 <br />e-resize <br />n-resize <br />nw-resize <br />w-resize <br />s-resize <br />se-resize <br />sw-resize </p>
		<p>38.页面进入和退出的特效 <br />进入页面&lt;meta http-equiv="Page-Enter" content="revealTrans(duration=x, transition=y)"&gt; <br />推出页面&lt;meta http-equiv="Page-Exit" content="revealTrans(duration=x, transition=y)"&gt;  <br />这个是页面被载入和调出时的一些特效。duration表示特效的持续时间，以秒为单位。transition表示使用哪种特效，取值为1-23: <br />　　0 矩形缩小  <br />　　1 矩形扩大  <br />　　2 圆形缩小 <br />　　3 圆形扩大  <br />　　4 下到上刷新  <br />　　5 上到下刷新 <br />　　6 左到右刷新  <br />　　7 右到左刷新  <br />　　8 竖百叶窗 <br />　　9 横百叶窗  <br />　　10 错位横百叶窗  <br />　　11 错位竖百叶窗 <br />　　12 点扩散  <br />　　13 左右到中间刷新  <br />　　14 中间到左右刷新 <br />　　15 中间到上下 <br />　　16 上下到中间  <br />　　17 右下到左上 <br />　　18 右上到左下  <br />　　19 左上到右下  <br />　　20 左下到右上 <br />　　21 横条  <br />　　22 竖条  <br />　　23 以上22种随机选择一种 </p>
		<p>39.在规定时间内跳转 <br />&lt;META http-equiv=V="REFRESH" content="5;URL=http://www.51js.com"&gt;  </p>
		<p>40.网页是否被检索 <br />&lt;meta name="ROBOTS" content="属性值"&gt; <br />　　其中属性值有以下一些: <br />　　属性值为"all": 文件将被检索，且页上链接可被查询； <br />　　属性值为"none": 文件不被检索，而且不查询页上的链接； <br />　　属性值为"index": 文件将被检索； <br />　　属性值为"follow": 查询页上的链接； <br />　　属性值为"noindex": 文件不检索，但可被查询链接； <br />　　属性值为"nofollow": 文件不被检索，但可查询页上的链接。 </p>
		<p>41.<font color="#000080">JAVASCRIPT判断IE是否开启COOKIE</font></p>
		<p>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">script type</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">text/javascript</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img height="16" alt="" src="http://yuntian.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />
						<br />
						<img height="16" alt="" src="http://yuntian.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />      </span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000"> CookieEnable() <br /><img height="16" alt="" src="http://yuntian.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />      { <br /><img height="16" alt="" src="http://yuntian.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />        </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> result</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">false</span>
				<span style="COLOR: #000000">; <br /><img height="16" alt="" src="http://yuntian.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />        </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(navigator.cookiesEnabled) <br /><img height="16" alt="" src="http://yuntian.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />          </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">true</span>
				<span style="COLOR: #000000">; <br /><img height="16" alt="" src="http://yuntian.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />        document.cookie </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">testcookie=yes;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">; <br /><img height="16" alt="" src="http://yuntian.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />        </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> cookieSet </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> document.cookie; <br /><img height="16" alt="" src="http://yuntian.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />        </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000"> (cookieSet.indexOf(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">testcookie=yes</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">) </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">1</span>
				<span style="COLOR: #000000">) <br /><img height="16" alt="" src="http://yuntian.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />          result</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">true</span>
				<span style="COLOR: #000000">; <br /><img height="16" alt="" src="http://yuntian.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />        document.cookie </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">""</span>
				<span style="COLOR: #000000">; <br /><img height="16" alt="" src="http://yuntian.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />        </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> result; <br /><img height="16" alt="" src="http://yuntian.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />      } <br /><img height="16" alt="" src="http://yuntian.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" /><br /><img height="16" alt="" src="http://yuntian.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />      </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(</span>
				<span style="COLOR: #000000">!</span>
				<span style="COLOR: #000000">CookieEnable()) <br /><img height="16" alt="" src="http://yuntian.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />      { <br /><img height="16" alt="" src="http://yuntian.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />        alert(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">对不起，您的浏览器的Cookie功能被禁用，请开启</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">); <br /><img height="16" alt="" src="http://yuntian.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" />      } <br /><img height="16" alt="" src="http://yuntian.cnblogs.com/Images/OutliningIndicators/None.gif" width="11" align="top" /></span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">script</span>
				<span style="COLOR: #000000">&gt;</span>
		</p>
		<p> </p>
		<p>匹配中文字符的正则表达式： [\u4e00-\u9fa5]<br /><br />匹配双字节字符(包括汉字在内)：[^\x00-\xff]<br /><br />应用：计算字符串的长度（一个双字节字符长度计2，ASCII字符计1）<br /><br />String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;}<br /><br />匹配空行的正则表达式：\n[\s| ]*\r<br /><br />匹配HTML标记的正则表达式：/&lt;(.*)&gt;.*&lt;\/\1&gt;|&lt;(.*) \/&gt;/ <br /><br />匹配首尾空格的正则表达式：(^\s*)|(\s*$)<br /><br />应用：javascript中没有像vbscript那样的trim函数，我们就可以利用这个表达式来实现，如下：<br /><br />String.prototype.trim = function()<br />{<br />return this.replace(/(^\s*)|(\s*$)/g, "");<br />}<br /><br />利用正则表达式分解和转换IP地址：<br /><br />下面是利用正则表达式匹配IP地址，并将IP地址转换成对应数值的Javascript程序：<br /><br />function IP2V(ip)<br />{<br />re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配IP地址的正则表达式<br />if(re.test(ip))<br />{<br />return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1<br />}<br />else<br />{<br />throw new Error("Not a valid IP address!")<br />}<br />}<br /><br />不过上面的程序如果不用正则表达式，而直接用split函数来分解可能更简单，程序如下：<br /><br />var ip="10.100.20.168"<br />ip=ip.split(".")<br />alert("IP值是："+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))<br /><br />匹配Email地址的正则表达式：\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*<br /><br />匹配网址URL的正则表达式：http://([\w-]+\.)+[\w-]+(/[\w- ./?%&amp;=]*)?<br /><br />利用正则表达式去除字串中重复的字符的算法程序：<br />[注：此程序不正确，原因见本贴回复]<br /><br />var s="abacabefgeeii"<br />var s1=s.replace(/(.).*\1/g,"$1")<br />var re=new RegExp("["+s1+"]","g")<br />var s2=s.replace(re,"") <br />alert(s1+s2) //结果为：abcefgi<br /><br />我原来在CSDN上发贴寻求一个表达式来实现去除重复字符的方法，最终没有找到，<br />这是我能想到的最简单的实现方法。思路是使用后向引用取出包括重复的字符，<br />再以重复的字符建立第二个表达式，取到不重复的字符，两者串连。<br />这个方法对于字符顺序有要求的字符串可能不适用。<br /><br />得用正则表达式从URL地址中提取文件名的javascript程序，如下结果为page1<br /><br />s="http://www.9499.net/page1.htm"<br />s=s.replace(/(.*\/){0,}([^\.]+).*/ig,"$2")<br />alert(s)<br /><br />利用正则表达式限制网页表单里的文本框输入内容：<br /><br />用正则表达式限制只能输入中文：onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"<br /><br />用正则表达式限制只能输入全角字符： onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"<br /><br />用正则表达式限制只能输入数字：onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"<br /><br />用正则表达式限制只能输入数字和英文：onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"<br /></p>
<img src ="http://www.blogjava.net/hszdz/aggbug/63425.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hszdz/" target="_blank">爪哇之家</a> 2006-08-14 11:20 <a href="http://www.blogjava.net/hszdz/articles/63425.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript常用到的一些方法</title><link>http://www.blogjava.net/hszdz/articles/58583.html</link><dc:creator>爪哇之家</dc:creator><author>爪哇之家</author><pubDate>Mon, 17 Jul 2006 07:49:00 GMT</pubDate><guid>http://www.blogjava.net/hszdz/articles/58583.html</guid><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: javascript常用到的一些方法								 																function						 openBigWin(temUrl)																																		{ 								var								 Wid; 								var								 Hei; 				...&nbsp;&nbsp;<a href='http://www.blogjava.net/hszdz/articles/58583.html'>阅读全文</a><img src ="http://www.blogjava.net/hszdz/aggbug/58583.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hszdz/" target="_blank">爪哇之家</a> 2006-07-17 15:49 <a href="http://www.blogjava.net/hszdz/articles/58583.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Prototype.js</title><link>http://www.blogjava.net/hszdz/articles/58424.html</link><dc:creator>爪哇之家</dc:creator><author>爪哇之家</author><pubDate>Sun, 16 Jul 2006 06:27:00 GMT</pubDate><guid>http://www.blogjava.net/hszdz/articles/58424.html</guid><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: prototype.js														覆盖版本 1.3.1																																																																								1. Prototype是什么?																																								...&nbsp;&nbsp;<a href='http://www.blogjava.net/hszdz/articles/58424.html'>阅读全文</a><img src ="http://www.blogjava.net/hszdz/aggbug/58424.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hszdz/" target="_blank">爪哇之家</a> 2006-07-16 14:27 <a href="http://www.blogjava.net/hszdz/articles/58424.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript中的继承(下)</title><link>http://www.blogjava.net/hszdz/articles/58420.html</link><dc:creator>爪哇之家</dc:creator><author>爪哇之家</author><pubDate>Sun, 16 Jul 2006 05:30:00 GMT</pubDate><guid>http://www.blogjava.net/hszdz/articles/58420.html</guid><description><![CDATA[
		<font size="2">
				<font face="Verdana">    <strong>Prototype</strong><br /><br />    在《<a href="../../flyingis/archive/2006/07/03/56324.html" target="_blank"><font color="#000080">JavaScript中的对象(下)</font></a>》一文中，我们了解到任何prototype的属性和方法都会被传递到该类的所有实例中，利用这一特性，使用prototype也能实现继承。 <br />  </font>
		</font>
		<div>
				<font face="Verdana">
						<font size="2">
								<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);">
										<img id="Codehighlighter1_18_20_Open_Image" onclick="this.style.display='none'; Codehighlighter1_18_20_Open_Text.style.display='none'; Codehighlighter1_18_20_Closed_Image.style.display='inline'; Codehighlighter1_18_20_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
										<img id="Codehighlighter1_18_20_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_18_20_Closed_Text.style.display='none'; Codehighlighter1_18_20_Open_Image.style.display='inline'; Codehighlighter1_18_20_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top" />
										<span style="color: rgb(0, 0, 255);">function</span>
										<span style="color: rgb(0, 0, 0);"> ClassA() </span>
										<span id="Codehighlighter1_18_20_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">
										</span>
										<span id="Codehighlighter1_18_20_Open_Text">
												<span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
										</span>
										<span style="color: rgb(0, 0, 0);">
												<br />
												<img src="../../Images/OutliningIndicators/None.gif" align="top" />
												<br />
												<img src="../../Images/OutliningIndicators/None.gif" align="top" /> ClassA.prototype.id </span>
										<span style="color: rgb(0, 0, 0);">=</span> <span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 0);">1998</span><span style="color: rgb(0, 0, 0);">;<br /><img id="Codehighlighter1_87_107_Open_Image" onclick="this.style.display='none'; Codehighlighter1_87_107_Open_Text.style.display='none'; Codehighlighter1_87_107_Closed_Image.style.display='inline'; Codehighlighter1_87_107_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_87_107_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_87_107_Closed_Text.style.display='none'; Codehighlighter1_87_107_Open_Image.style.display='inline'; Codehighlighter1_87_107_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top" /> ClassA.prototype.sayId </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">()</span><span id="Codehighlighter1_87_107_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="../../Images/dot.gif" /></span><span id="Codehighlighter1_87_107_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />   alert(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.id);<br /><img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: rgb(0, 0, 0);">;<br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /><br /><img id="Codehighlighter1_129_131_Open_Image" onclick="this.style.display='none'; Codehighlighter1_129_131_Open_Text.style.display='none'; Codehighlighter1_129_131_Closed_Image.style.display='inline'; Codehighlighter1_129_131_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_129_131_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_129_131_Closed_Text.style.display='none'; Codehighlighter1_129_131_Open_Image.style.display='inline'; Codehighlighter1_129_131_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">ClassB()</span><span id="Codehighlighter1_129_131_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="../../Images/dot.gif" /></span><span id="Codehighlighter1_129_131_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: rgb(0, 0, 0);"><br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /><br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /> ClassB.prototype</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">ClassA();<br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /> ClassB.prototype.name</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 0);">""</span><span style="color: rgb(0, 0, 0);">;<br /><img id="Codehighlighter1_231_253_Open_Image" onclick="this.style.display='none'; Codehighlighter1_231_253_Open_Text.style.display='none'; Codehighlighter1_231_253_Closed_Image.style.display='inline'; Codehighlighter1_231_253_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_231_253_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_231_253_Closed_Text.style.display='none'; Codehighlighter1_231_253_Open_Image.style.display='inline'; Codehighlighter1_231_253_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top" /> ClassB.prototype.sayName</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">()</span><span id="Codehighlighter1_231_253_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="../../Images/dot.gif" /></span><span id="Codehighlighter1_231_253_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />   alert(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.name);<br /><img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div>
						</font>
				</font>
		</div>
		<font size="2">
				<br />
				<font face="Verdana">   
需要注意的是，这种实现继承的方法不能将参数传入到ClassA的构造器中，是一个缺陷。ClassB的所有属性和方法必需在将ClassB的
prototype对象指向ClassA的实例之后进行附值。这样做是因为，prototype指向一个新的对象，在此之前prototype的属性和方
法都被覆盖销毁。<br /><br />    对代码进行测试：<br /></font>
		</font>
		<div>
				<font size="2">
						<br />
						<font face="Verdana">
								<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);">
										<img src="../../Images/OutliningIndicators/None.gif" align="top" />
										<span style="color: rgb(0, 0, 255);">var</span>
										<span style="color: rgb(0, 0, 0);"> obj1 </span>
										<span style="color: rgb(0, 0, 0);">=</span>
										<span style="color: rgb(0, 0, 0);">
										</span>
										<span style="color: rgb(0, 0, 255);">new</span>
										<span style="color: rgb(0, 0, 0);">ClassA();<br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /></span>
										<span style="color: rgb(0, 0, 255);">var</span>
										<span style="color: rgb(0, 0, 0);"> obj2</span>
										<span style="color: rgb(0, 0, 0);">=</span>
										<span style="color: rgb(0, 0, 0);">
												<font color="#0000ff">new</font> ClassB();<br /><img src="../../Images/OutliningIndicators/None.gif" align="top" />obj1.id </span>
										<span style="color: rgb(0, 0, 0);">=</span> <span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 0);">1998</span><span style="color: rgb(0, 0, 0);">;<br /><img src="../../Images/OutliningIndicators/None.gif" align="top" />obj2.id</span><span style="color: rgb(0, 0, 0);">=</span> <span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 0);">2000</span><span style="color: rgb(0, 0, 0);">;<br /><img src="../../Images/OutliningIndicators/None.gif" align="top" />obj2.name </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">悉尼奥运会</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br /><img src="../../Images/OutliningIndicators/None.gif" align="top" />obj1.sayId();  </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">输出"1998"</span><span style="color: rgb(0, 128, 0);"><br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0, 0, 0);">obj2.sayId();  </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">输出"1998"</span><span style="color: rgb(0, 128, 0);"><br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0, 0, 0);">obj2.sayName();  </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">输出"悉尼奥运会"</span><span style="color: rgb(0, 128, 0);"><br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0, 0, 0);"><br /><img src="../../Images/OutliningIndicators/None.gif" align="top" />alert(obj2</span><span style="color: rgb(0, 0, 255);">instanceof</span><span style="color: rgb(0, 0, 0);">ClassA);  </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">输出"true"</span><span style="color: rgb(0, 128, 0);"><br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0, 0, 0);">alert(obj2 </span><span style="color: rgb(0, 0, 255);">instanceof</span><span style="color: rgb(0, 0, 0);">ClassB);  </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">输出"true"</span></div>
						</font>
				</font>
		</div>
		<font size="2">
				<br />
				<font face="Verdana">    在上述代码中可以看出，使用prototype实现继承，instanceof操作符出现了另外的用途，在用构造起定义类实现继承时，instanceof不会出现这种效果。但是使用prototype不能支持多重继承。<br />  <br />    在《<a href="../../flyingis/archive/2006/07/03/56324.html" target="_blank"><font color="#000080">JavaScript中的对象(下)</font></a>》和上文的论述中可以了解到，使用构造器定义类实现继承和使用prototype实现继承均存在各自的缺陷，要避免出现这些情况，只有将两者混合使用。<br /><br />    <strong>混合方法</strong><br /><br />    《<a href="../../flyingis/archive/2006/07/03/56324.html" target="_blank"><font color="#000080">JavaScript中的对象(下)</font></a>》一文中曾经论述，创建一个类的最佳方法，是使用构造器的方法去定义属性，使用prototype定义方法。在继承中同样如此。<br /><br /></font>
		</font>
		<div>
				<font size="2">
						<font face="Verdana">
								<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);">
										<img id="Codehighlighter1_20_38_Open_Image" onclick="this.style.display='none'; Codehighlighter1_20_38_Open_Text.style.display='none'; Codehighlighter1_20_38_Closed_Image.style.display='inline'; Codehighlighter1_20_38_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
										<img id="Codehighlighter1_20_38_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_20_38_Closed_Text.style.display='none'; Codehighlighter1_20_38_Open_Image.style.display='inline'; Codehighlighter1_20_38_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top" />
										<span style="color: rgb(0, 0, 255);">function</span>
										<span style="color: rgb(0, 0, 0);">ClassA(id)</span>
										<span id="Codehighlighter1_20_38_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">
												<img src="../../Images/dot.gif" />
										</span>
										<span id="Codehighlighter1_20_38_Open_Text">
												<span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />  </span>
												<span style="color: rgb(0, 0, 255);">this</span>
												<span style="color: rgb(0, 0, 0);">.id </span>
												<span style="color: rgb(0, 0, 0);">=</span>
												<span style="color: rgb(0, 0, 0);"> id;<br /><img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
										</span>
										<span style="color: rgb(0, 0, 0);">
												<br />
												<img src="../../Images/OutliningIndicators/None.gif" align="top" />
												<br />
												<img id="Codehighlighter1_77_97_Open_Image" onclick="this.style.display='none'; Codehighlighter1_77_97_Open_Text.style.display='none'; Codehighlighter1_77_97_Closed_Image.style.display='inline'; Codehighlighter1_77_97_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
												<img id="Codehighlighter1_77_97_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_77_97_Closed_Text.style.display='none'; Codehighlighter1_77_97_Open_Image.style.display='inline'; Codehighlighter1_77_97_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top" />
												ClassA.prototype.sayId</span>
										<span style="color: rgb(0, 0, 0);">=</span> <span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">() </span><span id="Codehighlighter1_77_97_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="../../Images/dot.gif" /></span><span id="Codehighlighter1_77_97_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />   alert(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.id);<br /><img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: rgb(0, 0, 0);">;<br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /><br /><img id="Codehighlighter1_127_174_Open_Image" onclick="this.style.display='none'; Codehighlighter1_127_174_Open_Text.style.display='none'; Codehighlighter1_127_174_Closed_Image.style.display='inline'; Codehighlighter1_127_174_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_127_174_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_127_174_Closed_Text.style.display='none'; Codehighlighter1_127_174_Open_Image.style.display='inline'; Codehighlighter1_127_174_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);"> ClassB(id, name) </span><span id="Codehighlighter1_127_174_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="../../Images/dot.gif" /></span><span id="Codehighlighter1_127_174_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />   <b><strong>ClassA.call(</strong></b></span><b><span style="color: rgb(0, 0, 255);"><strong>this</strong></span></b><span style="color: rgb(0, 0, 0);"><b><strong>, id)</strong></b>;<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />  </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.name </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">name;<br /><img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: rgb(0, 0, 0);"><br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /><br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /><strong>ClassB.prototype </strong></span><strong><span style="color: rgb(0, 0, 0);">=</span> 
												<span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 255);">new</span></strong><span style="color: rgb(0, 0, 0);"><strong> ClassA()</strong>;<br /><img id="Codehighlighter1_248_270_Open_Image" onclick="this.style.display='none'; Codehighlighter1_248_270_Open_Text.style.display='none'; Codehighlighter1_248_270_Closed_Image.style.display='inline'; Codehighlighter1_248_270_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_248_270_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_248_270_Closed_Text.style.display='none'; Codehighlighter1_248_270_Open_Image.style.display='inline'; Codehighlighter1_248_270_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top" /> ClassB.prototype.sayName</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">()</span><span id="Codehighlighter1_248_270_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="../../Images/dot.gif" /></span><span id="Codehighlighter1_248_270_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />   alert(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.name);<br /><img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div>
						</font>
				</font>
		</div>
<img src ="http://www.blogjava.net/hszdz/aggbug/58420.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hszdz/" target="_blank">爪哇之家</a> 2006-07-16 13:30 <a href="http://www.blogjava.net/hszdz/articles/58420.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript中的继承(上)</title><link>http://www.blogjava.net/hszdz/articles/58419.html</link><dc:creator>爪哇之家</dc:creator><author>爪哇之家</author><pubDate>Sun, 16 Jul 2006 05:29:00 GMT</pubDate><guid>http://www.blogjava.net/hszdz/articles/58419.html</guid><description><![CDATA[
		<font face="Verdana" size="2">   继承是面向对象语言基本特征之一，通过继承可以将父类所具有的特性遗传到子类。ECMAScript中的继承不像Java、C++等语言那么明显，直接通过关键字来实现，通常它是通过模拟方式来实现继承功能的，并且实现方式有多种。<br /><br />    在继承中引入this关键字，使用构造器方法定义类来实现继承。一个构造器是一个函数，因此可以将父类的构造器作为子类的一个方法使用并进行调用。<br /></font>
		<font face="Verdana" size="2">
				<br />
				<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);">
						<img id="Codehighlighter1_20_93_Open_Image" onclick="this.style.display='none'; Codehighlighter1_20_93_Open_Text.style.display='none'; Codehighlighter1_20_93_Closed_Image.style.display='inline'; Codehighlighter1_20_93_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_20_93_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_20_93_Closed_Text.style.display='none'; Codehighlighter1_20_93_Open_Image.style.display='inline'; Codehighlighter1_20_93_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top" />
						<span style="color: rgb(0, 0, 255);">function</span>
						<span style="color: rgb(0, 0, 0);">ClassA(id)</span>
						<span id="Codehighlighter1_20_93_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">
								<img src="../../Images/dot.gif" />
						</span>
						<span id="Codehighlighter1_20_93_Open_Text">
								<span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />  </span>
								<span style="color: rgb(0, 0, 255);">this</span>
								<span style="color: rgb(0, 0, 0);">.id</span>
								<span style="color: rgb(0, 0, 0);">=</span>
								<span style="color: rgb(0, 0, 0);">id;<br /><img id="Codehighlighter1_64_90_Open_Image" onclick="this.style.display='none'; Codehighlighter1_64_90_Open_Text.style.display='none'; Codehighlighter1_64_90_Closed_Image.style.display='inline'; Codehighlighter1_64_90_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_64_90_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_64_90_Closed_Text.style.display='none'; Codehighlighter1_64_90_Open_Image.style.display='inline'; Codehighlighter1_64_90_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  </span>
								<span style="color: rgb(0, 0, 255);">this</span>
								<span style="color: rgb(0, 0, 0);">.sayId </span>
								<span style="color: rgb(0, 0, 0);">=</span> <span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">() </span><span id="Codehighlighter1_64_90_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="../../Images/dot.gif" /></span><span id="Codehighlighter1_64_90_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />     alert(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.id);<br /><img src="../../Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />   }</span></span><span style="color: rgb(0, 0, 0);">;<br /><img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span>
						<span style="color: rgb(0, 0, 0);">
								<br />
								<img src="../../Images/OutliningIndicators/None.gif" align="top" />
								<br />
								<img id="Codehighlighter1_122_276_Open_Image" onclick="this.style.display='none'; Codehighlighter1_122_276_Open_Text.style.display='none'; Codehighlighter1_122_276_Closed_Image.style.display='inline'; Codehighlighter1_122_276_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
								<img id="Codehighlighter1_122_276_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_122_276_Closed_Text.style.display='none'; Codehighlighter1_122_276_Open_Image.style.display='inline'; Codehighlighter1_122_276_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top" />
						</span>
						<span style="color: rgb(0, 0, 255);">function</span>
						<span style="color: rgb(0, 0, 0);">ClassB(id, name) </span>
						<span id="Codehighlighter1_122_276_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">
								<img src="../../Images/dot.gif" />
						</span>
						<span id="Codehighlighter1_122_276_Open_Text">
								<span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />  </span>
								<span style="color: rgb(0, 0, 255);">this</span>
								<span style="color: rgb(0, 0, 0);">.newMethod</span>
								<span style="color: rgb(0, 0, 0);">=</span>
								<span style="color: rgb(0, 0, 0);"> ClassA;<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />  </span>
								<span style="color: rgb(0, 0, 255);">this</span>
								<span style="color: rgb(0, 0, 0);">.newMethod(id);<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />  </span>
								<span style="color: rgb(0, 0, 255);">delete</span> <span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 255);">this</span>.<span style="color: rgb(0, 0, 0);">newMethod;<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />  </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.name</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> name;<br /><img id="Codehighlighter1_247_273_Open_Image" onclick="this.style.display='none'; Codehighlighter1_247_273_Open_Text.style.display='none'; Codehighlighter1_247_273_Closed_Image.style.display='inline'; Codehighlighter1_247_273_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_247_273_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_247_273_Closed_Text.style.display='none'; Codehighlighter1_247_273_Open_Image.style.display='inline'; Codehighlighter1_247_273_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.sayName</span><span style="color: rgb(0, 0, 0);">=</span> <span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">()</span><span id="Codehighlighter1_247_273_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="../../Images/dot.gif" /></span><span id="Codehighlighter1_247_273_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />     alert(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.name);<br /><img src="../../Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />   }</span></span><span style="color: rgb(0, 0, 0);">;<br /><img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span>
				</div>
		</font>
		<font face="Verdana" size="2">
				<br />   
注意，子类中所有新的属性和方法都必需在删除newMethod后引入，否则，可能存在用父类的属性和方法重写子类属性和方法的危险。另外，使用这种方法
还可以实现多重继承，此时如果两个父类具有相同的属性或方法时，最后的类具有优先级。由于这种继承方法比较流行，ECMAScript第三版引入了两个
Function对象：call()和apply()。<br /><br />    <strong>call()</strong><br /><br />    call()方法是最接近上述继承方式的方法，它的第一个参数是this指向的对象，所有的其他参数都直接传到function。<br /></font>
		<div>
				<font face="Verdana" size="2">
						<br />
						<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);">
								<img id="Codehighlighter1_34_71_Open_Image" onclick="this.style.display='none'; Codehighlighter1_34_71_Open_Text.style.display='none'; Codehighlighter1_34_71_Closed_Image.style.display='inline'; Codehighlighter1_34_71_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
								<img id="Codehighlighter1_34_71_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_34_71_Closed_Text.style.display='none'; Codehighlighter1_34_71_Open_Image.style.display='inline'; Codehighlighter1_34_71_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top" />
								<span style="color: rgb(0, 0, 255);">function</span>
								<span style="color: rgb(0, 0, 0);">sayMessage(first, last)</span> <span id="Codehighlighter1_34_71_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"></span><span id="Codehighlighter1_34_71_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />   alert(first </span><span style="color: rgb(0, 0, 0);">+</span> <span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.logic </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">last);<br /><img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: rgb(0, 0, 0);">;<br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /><br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">obj </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Object();<br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /> obj.logic </span><span style="color: rgb(0, 0, 0);">=</span> <span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">or</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /><br /><img style="width: 11px; height: 16px;" src="../../Images/OutliningIndicators/None.gif" align="top" /> sayMessage.call(obj,</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Coffee </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Tea</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);  </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">输出"Coffee or Tea"</span></div>
				</font>
		</div>
		<font face="Verdana" size="2">
				<br />    用call()方法来实现继承，只需要this.newMethod相关的三行代码。<br /></font>
		<div>
				<font face="Verdana" size="2">
						<br />
						<font face="Verdana" size="2">
								<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);">
										<img id="Codehighlighter1_26_230_Open_Image" onclick="this.style.display='none'; Codehighlighter1_26_230_Open_Text.style.display='none'; Codehighlighter1_26_230_Closed_Image.style.display='inline'; Codehighlighter1_26_230_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
										<img id="Codehighlighter1_26_230_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_26_230_Closed_Text.style.display='none'; Codehighlighter1_26_230_Open_Image.style.display='inline'; Codehighlighter1_26_230_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top" />
										<span style="color: rgb(0, 0, 255);">function</span>
										<span style="color: rgb(0, 0, 0);"> ClassB(id, name)</span>
										<span id="Codehighlighter1_26_230_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">
												<img src="../../Images/dot.gif" />
										</span>
										<span id="Codehighlighter1_26_230_Open_Text">
												<span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />  </span> 
												<span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">this.newMethod = ClassA;</span><span style="color: rgb(0, 128, 0);"><br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: rgb(0, 0, 0);">  </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">this.newMethod(id);</span><span style="color: rgb(0, 128, 0);"><br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: rgb(0, 0, 0);">  </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">delete this.newMethod;</span><span style="color: rgb(0, 128, 0);"><br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: rgb(0, 0, 0);">  ClassA.call(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">, id);  </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">this指向ClassB的对象</span><span style="color: rgb(0, 128, 0);"><br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: rgb(0, 0, 0);"><br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />  </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.name </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">name;<br /><img id="Codehighlighter1_201_227_Open_Image" onclick="this.style.display='none'; Codehighlighter1_201_227_Open_Text.style.display='none'; Codehighlighter1_201_227_Closed_Image.style.display='inline'; Codehighlighter1_201_227_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_201_227_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_201_227_Closed_Text.style.display='none'; Codehighlighter1_201_227_Open_Image.style.display='inline'; Codehighlighter1_201_227_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.sayName </span><span style="color: rgb(0, 0, 0);">=</span> <span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">() </span><span id="Codehighlighter1_201_227_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"></span><span id="Codehighlighter1_201_227_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />     alert(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.name);<br /><img src="../../Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />   }</span></span><span style="color: rgb(0, 0, 0);">;<br /><img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span>
								</div>
						</font>
				</font>
				<font face="Verdana" size="2">
						<br />    <strong>apply()</strong><br /><br />    apply()方法需要两个参数：this所指向的对象，和传到function的由参数组成的array。<br /><br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><img id="Codehighlighter1_34_71_Open_Image" onclick="this.style.display='none'; Codehighlighter1_34_71_Open_Text.style.display='none'; Codehighlighter1_34_71_Closed_Image.style.display='inline'; Codehighlighter1_34_71_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_34_71_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_34_71_Closed_Text.style.display='none'; Codehighlighter1_34_71_Open_Image.style.display='inline'; Codehighlighter1_34_71_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);"> sayMessage(first, last)  </span><span id="Codehighlighter1_34_71_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="../../Images/dot.gif" /></span><span id="Codehighlighter1_34_71_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />  alert(first </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.logic </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">last);<br /><img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: rgb(0, 0, 0);">;<br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /><br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> obj </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Object();<br /><img src="../../Images/OutliningIndicators/None.gif" align="top" />obj.logic </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">or</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /><br /><img src="../../Images/OutliningIndicators/None.gif" align="top" />sayMessage.apply(obj, </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Array(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Coffee </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> Tea</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">));  </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">输出"Coffee or Tea"</span></div></font>
				<font face="Verdana" size="2">  <br />    同样，使用 apply() 实现继承可以通过如下方法实现。<br /><br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><img id="Codehighlighter1_26_242_Open_Image" onclick="this.style.display='none'; Codehighlighter1_26_242_Open_Text.style.display='none'; Codehighlighter1_26_242_Closed_Image.style.display='inline'; Codehighlighter1_26_242_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_26_242_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_26_242_Closed_Text.style.display='none'; Codehighlighter1_26_242_Open_Image.style.display='inline'; Codehighlighter1_26_242_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);"> ClassB(id, name) </span><span id="Codehighlighter1_26_242_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="../../Images/dot.gif" /></span><span id="Codehighlighter1_26_242_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />  </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">this.newMethod = ClassA;</span><span style="color: rgb(0, 128, 0);"><br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: rgb(0, 0, 0);">  </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">this.newMethod(id);</span><span style="color: rgb(0, 128, 0);"><br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: rgb(0, 0, 0);">  </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">delete this.newMethod;</span><span style="color: rgb(0, 128, 0);"><br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: rgb(0, 0, 0);">  ClassA.apply(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Array(id));  </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">this指向ClassB的对象</span><span style="color: rgb(0, 128, 0);"><br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: rgb(0, 0, 0);"><br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />  </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.name </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> name;<br /><img id="Codehighlighter1_213_239_Open_Image" onclick="this.style.display='none'; Codehighlighter1_213_239_Open_Text.style.display='none'; Codehighlighter1_213_239_Closed_Image.style.display='inline'; Codehighlighter1_213_239_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_213_239_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_213_239_Closed_Text.style.display='none'; Codehighlighter1_213_239_Open_Image.style.display='inline'; Codehighlighter1_213_239_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.sayName </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">() </span><span id="Codehighlighter1_213_239_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="../../Images/dot.gif" /></span><span id="Codehighlighter1_213_239_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />    alert(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.name);<br /><img src="../../Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />  }</span></span><span style="color: rgb(0, 0, 0);">;<br /><img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div></font>
				<font size="2">
						<font face="Verdana">
								<br />    当父类构造器的参数和子类构造器参数的顺序一致时，可以使用子类的arguments对象作为第二个参数。否则，必需创建一个array来传递参数，或是使用call()方法。</font>
				</font>
		</div>
<img src ="http://www.blogjava.net/hszdz/aggbug/58419.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hszdz/" target="_blank">爪哇之家</a> 2006-07-16 13:29 <a href="http://www.blogjava.net/hszdz/articles/58419.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript中的对象(上)</title><link>http://www.blogjava.net/hszdz/articles/58417.html</link><dc:creator>爪哇之家</dc:creator><author>爪哇之家</author><pubDate>Sun, 16 Jul 2006 05:28:00 GMT</pubDate><guid>http://www.blogjava.net/hszdz/articles/58417.html</guid><wfw:comment>http://www.blogjava.net/hszdz/comments/58417.html</wfw:comment><comments>http://www.blogjava.net/hszdz/articles/58417.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hszdz/comments/commentRss/58417.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hszdz/services/trackbacks/58417.html</trackback:ping><description><![CDATA[
		<font size="2">
				<font face="Verdana">  
面向对象语言需要具备三种基本特征：继承（Inheritance）、多态 (Polymorphism) 、封装（Encapsulation
and Aggregation）。和Java 、C++ 等语言一样，ECMAScript 被认为是面向对象的，因为它同时支持这些特征。<br /> <br /></font>
		</font>
		<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);">
				<font size="2">
						<font face="Verdana">
								<img src="../../Images/OutliningIndicators/None.gif" align="top" />
								<span style="color: rgb(0, 0, 255);">var</span>
								<span style="color: rgb(0, 0, 0);"> obj </span>
								<span style="color: rgb(0, 0, 0);">=</span>
								<span style="color: rgb(0, 0, 0);"> </span>
								<span style="color: rgb(0, 0, 255);">new</span>
								<span style="color: rgb(0, 0, 0);"> Object();</span>
						</font>
				</font>
		</div>
		<font size="2">
				<font face="Verdana">
						<br />   
该语句创建了一个对象，当构造函数没有参数时，可以省略后面的括号。我们通常是通过对象的引用来进行对象操作，当一个对象的引用为null时，
ECMAScript将启动垃圾回收程序删除该对象，释放内存。当一个对象存在多个引用时，需要将所有的引用设置为null来释放该对象所占用的空间。<br /><br /><b><font size="3">1  </font></b><b><font size="3">早期绑定和动态绑定<br /></font></b><br />    早期绑定是指在对象被实例化之前对象的属性和方法已经被定义，使得编译器或解释器能够提前编译机器码。Java和VB支持这种特性，但ECMAScript 并非强类型，不支持早期绑定。<br /><br />    动态绑定是指编译器或解释器在运行时才知道该对象的具体类型，之前并不会检查，只会判断这些属性和方法是否得到该对象的支持。ECMAScript对所有的变量使用动态绑定。<br /><br /><font size="3"><b>2  </b><b>对象类型</b></font><br /><br />2.1  原始对象<br /><br />   
ECMA-262
定义不受主机环境影响的ECMAScript支持的任意对象为原始对象，简而言之，原始对象就是ECMA-262定义的引用类型，比较常用的有
Object、Function、String、Boolean、Number、Array、Date。 <br /><b><br />    Array<br /><br />    </b>Array
有许多常用的方法，很多和Java类似，在此不作介绍。需要注意的是，使用push()和pop()两个方法，可以将Array看作一个栈，遵循后进先出
规则（LIFO）。使用shift()和push()两个方法，Array对象即可看作是一个队列，遵循后进后出的规则（LILO）。splice()方
法非常有用，它轻松的实现了链表的一些基本功能，如删除数据项、插入数据、替换数据。 <br /><b><br />    Date<br /><br />    </b>ECMAScript
中的Date类是基于Java早期版本中的java.util.Date类的，它可以精确表示1970年1月1日（格林威治时间）前后285616年的任
意时间。Date是少有的几个重写了toString()和valueOf()方法，并且两个方法并不相同的类。valueOf()通常表示精确到毫秒级
的时间，toString()通常返回个性化的时间表示方法，例如相同的时间在不同浏览器下显示的效果可能不一样。 <br /><br />2.2  Build-in对象<br /><br />   
Build-in 对象除了具备原始对象的基本特性外，它在 ECMAScript 程序开始运行时就可以使用，因此可以说任何 Build-in
对象就是原始对象。目前 ECMA-262 只定义了两个 Build-in 对象： Global 和 Math 。 <br /><b><br />    Global<br /><br />    </b>在ECMAScript
里，没有函数可以单独存在，所有的函数都必须是某个对象的方法。如isNan()、isFinite()、parseInt()、parseFloat
()、encodeURI()、encodeURIComponent()、decodeURI()、decodeURIComponent()
等均是Global对象的方法，除此之外，Global对象还包括一些属性。 <br /><b><br />    Math<br /><br />    </b>Math中有许多属性和方法可以用于数学计算，和Java中的比较类似。 <br /><br />2.3  Host 对象<br /><br />    除了原始对象和Build-in对象外，其他对象均是Host对象。所有的BOM和DOM对象均被认为是Host对象。 <br /><b><br /><font size="3">3  </font></b><b><font size="3">类成员的访问方式<br /><br />    </font></b>在
面向对象语言程序设计中，常见的类成员访问方式有public、protected和private。在ECMAScript中，只有public一种访
问方式，对象中所有的属性和方法都是可见的，因此，在程序设计时需要额外注意系统安全性的问题。在没有合理的程序规范之前，程序员在编写
ECMAScript代码时，通常使用一定规范的命名方式来说明该属性或方法是私有的（仅仅是说明而已，实际上还是公有的），例如在名称前后加上下划线，
或只在名称前加下划线。另外，在ECMAScript中没有static方法。 <br /><b><br /><font size="3">4  this</font></b><b><font size="3">关键字</font></b><br /><br />    this关键字是ECMAScript中一个非常重要的概念，通常在对象的方法中使用。<br /><br /></font>
		</font>
		<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);">
				<font size="2">
						<font face="Verdana">
								<img id="Codehighlighter1_21_44_Open_Image" onclick="this.style.display='none'; Codehighlighter1_21_44_Open_Text.style.display='none'; Codehighlighter1_21_44_Closed_Image.style.display='inline'; Codehighlighter1_21_44_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
								<img id="Codehighlighter1_21_44_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_21_44_Closed_Text.style.display='none'; Codehighlighter1_21_44_Open_Image.style.display='inline'; Codehighlighter1_21_44_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top" />
								<span style="color: rgb(0, 0, 255);">function</span>
								<span style="color: rgb(0, 0, 0);"> whatFruit() </span>
								<span id="Codehighlighter1_21_44_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">
										<img src="../../Images/dot.gif" />
								</span>
								<span id="Codehighlighter1_21_44_Open_Text">
										<span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />  alert(</span>
										<span style="color: rgb(0, 0, 255);">this</span>
										<span style="color: rgb(0, 0, 0);">.color);<br /><img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
								</span>
								<span style="color: rgb(0, 0, 0);">
										<br />
										<img src="../../Images/OutliningIndicators/None.gif" align="top" />
										<br />
										<img src="../../Images/OutliningIndicators/None.gif" align="top" />
								</span>
								<span style="color: rgb(0, 0, 255);">var</span>
								<span style="color: rgb(0, 0, 0);"> table1 </span>
								<span style="color: rgb(0, 0, 0);">=</span>
								<span style="color: rgb(0, 0, 0);"> </span>
								<span style="color: rgb(0, 0, 255);">new</span>
								<span style="color: rgb(0, 0, 0);"> Object;<br /><img src="../../Images/OutliningIndicators/None.gif" align="top" />table1.fruit </span>
								<span style="color: rgb(0, 0, 0);">=</span>
								<span style="color: rgb(0, 0, 0);"> </span>
								<span style="color: rgb(0, 0, 0);">"</span>
								<span style="color: rgb(0, 0, 0);">apple</span>
								<span style="color: rgb(0, 0, 0);">"</span>
								<span style="color: rgb(0, 0, 0);">;<br /><img src="../../Images/OutliningIndicators/None.gif" align="top" />table1.whatFruit </span>
								<span style="color: rgb(0, 0, 0);">=</span>
								<span style="color: rgb(0, 0, 0);"> whatFruit;<br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /></span>
								<span style="color: rgb(0, 0, 255);">var</span>
								<span style="color: rgb(0, 0, 0);"> table2 </span>
								<span style="color: rgb(0, 0, 0);">=</span>
								<span style="color: rgb(0, 0, 0);"> </span>
								<span style="color: rgb(0, 0, 255);">new</span>
								<span style="color: rgb(0, 0, 0);"> Object;<br /><img src="../../Images/OutliningIndicators/None.gif" align="top" />table2.fruit </span>
								<span style="color: rgb(0, 0, 0);">=</span>
								<span style="color: rgb(0, 0, 0);"> </span>
								<span style="color: rgb(0, 0, 0);">"</span>
								<span style="color: rgb(0, 0, 0);">pear</span>
								<span style="color: rgb(0, 0, 0);">"</span>
								<span style="color: rgb(0, 0, 0);">;<br /><img src="../../Images/OutliningIndicators/None.gif" align="top" />table2.whatFruit </span>
								<span style="color: rgb(0, 0, 0);">=</span>
								<span style="color: rgb(0, 0, 0);"> whatFruit;<br /><img src="../../Images/OutliningIndicators/None.gif" align="top" />table1.whatFruit();  </span>
								<span style="color: rgb(0, 128, 0);">//</span>
								<span style="color: rgb(0, 128, 0);">输出apple</span>
								<span style="color: rgb(0, 128, 0);">
										<br />
										<img src="../../Images/OutliningIndicators/None.gif" align="top" />
								</span>
								<span style="color: rgb(0, 0, 0);">table2.whatFruit();  </span>
								<span style="color: rgb(0, 128, 0);">//</span>
								<span style="color: rgb(0, 128, 0);">输出pear</span>
						</font>
				</font>
		</div>
		<font size="2">
				<font face="Verdana">
						<br />    当一个变量前面没有对象或this来引用时，ECMAScript认为该变量是一个本地的或全局变量，于是在本地和全局中去搜寻该变量，如果最后仍没有找到，将会在alert中输出null。</font>
		</font>
<img src ="http://www.blogjava.net/hszdz/aggbug/58417.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hszdz/" target="_blank">爪哇之家</a> 2006-07-16 13:28 <a href="http://www.blogjava.net/hszdz/articles/58417.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript中的对象(下)</title><link>http://www.blogjava.net/hszdz/articles/58418.html</link><dc:creator>爪哇之家</dc:creator><author>爪哇之家</author><pubDate>Sun, 16 Jul 2006 05:28:00 GMT</pubDate><guid>http://www.blogjava.net/hszdz/articles/58418.html</guid><description><![CDATA[
		<font size="2">
				<font face="Verdana">
						<font size="3">
								<strong>5  自定义类和对象</strong>
						</font>
						<br />
						<br />5.1  工厂方法<br /><br />    在ECMAScript中创建工厂方法，返回一个特定类型的对象，以此实现代码的简洁适用。<br /><br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><img id="Codehighlighter1_23_188_Open_Image" onclick="this.style.display='none'; Codehighlighter1_23_188_Open_Text.style.display='none'; Codehighlighter1_23_188_Closed_Image.style.display='inline'; Codehighlighter1_23_188_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_23_188_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_23_188_Closed_Text.style.display='none'; Codehighlighter1_23_188_Open_Image.style.display='inline'; Codehighlighter1_23_188_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);"> createFruit() </span><span id="Codehighlighter1_23_188_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="../../Images/dot.gif" /></span><span id="Codehighlighter1_23_188_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />  </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> tempFruit </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Object;<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />  tempFruit.name </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">apple</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />  tempFruit.number </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">5</span><span style="color: rgb(0, 0, 0);">;<br /><img id="Codehighlighter1_141_167_Open_Image" onclick="this.style.display='none'; Codehighlighter1_141_167_Open_Text.style.display='none'; Codehighlighter1_141_167_Closed_Image.style.display='inline'; Codehighlighter1_141_167_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_141_167_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_141_167_Closed_Text.style.display='none'; Codehighlighter1_141_167_Open_Image.style.display='inline'; Codehighlighter1_141_167_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  tempFruit.showName </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">() </span><span id="Codehighlighter1_141_167_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="../../Images/dot.gif" /></span><span id="Codehighlighter1_141_167_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />    alert(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.name);<br /><img src="../../Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />  }</span></span><span style="color: rgb(0, 0, 0);">;<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> tempFruit;<br /><img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: rgb(0, 0, 0);"><br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /><br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> Fruit1 </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> creatFruit();<br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> Fruit2 </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> creatFruit();</span></div><br />   
在createFruit()中可以加入形参来传入参数的值。随着ECMAScript不断被规范化，这种创建对象的方法已不再流行，一部分原因是语法上
的，一部分原因是功能上的，如每个对象的实例都拥有属于自己的showName方法，给内存管理带来一定的开销。<br /><br />5.2  构造函数<br /><br />    选择一个类名，第一个字母大写，该类名即是构造函数的名称。创建一个构造函数和工厂方法比较类似，不同的是需要使用关键字new来创建对象的引用。使用构造函数的方式来创建对象和使用工厂方法有着相同的弊端。<br /><br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><img id="Codehighlighter1_29_133_Open_Image" onclick="this.style.display='none'; Codehighlighter1_29_133_Open_Text.style.display='none'; Codehighlighter1_29_133_Closed_Image.style.display='inline'; Codehighlighter1_29_133_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_29_133_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_29_133_Closed_Text.style.display='none'; Codehighlighter1_29_133_Open_Image.style.display='inline'; Codehighlighter1_29_133_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);"> Fruit(name, number) </span><span id="Codehighlighter1_29_133_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="../../Images/dot.gif" /></span><span id="Codehighlighter1_29_133_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />  </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.name </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> name;<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />  </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.number </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> number;<br /><img id="Codehighlighter1_104_130_Open_Image" onclick="this.style.display='none'; Codehighlighter1_104_130_Open_Text.style.display='none'; Codehighlighter1_104_130_Closed_Image.style.display='inline'; Codehighlighter1_104_130_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_104_130_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_104_130_Closed_Text.style.display='none'; Codehighlighter1_104_130_Open_Image.style.display='inline'; Codehighlighter1_104_130_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.showName </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">() </span><span id="Codehighlighter1_104_130_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="../../Images/dot.gif" /></span><span id="Codehighlighter1_104_130_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />    alert(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.name);<br /><img src="../../Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />  }</span></span><span style="color: rgb(0, 0, 0);">;<br /><img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: rgb(0, 0, 0);"><br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /><br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> Fruit1 </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Fruit(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">apple</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 0);">5</span><span style="color: rgb(0, 0, 0);">);<br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> Fruit2 </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Fruit(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">pear</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 0);">3</span><span style="color: rgb(0, 0, 0);">);</span></div><br />5.3  使用 Prototype<br /><br />    使用prototype属性可以用来创建新的对象，首先需要一个空的构造函数建立类的名称，然后所有的属性和方法都直接分配到prototype属性中。<br /><br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><img id="Codehighlighter1_17_19_Open_Image" onclick="this.style.display='none'; Codehighlighter1_17_19_Open_Text.style.display='none'; Codehighlighter1_17_19_Closed_Image.style.display='inline'; Codehighlighter1_17_19_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_17_19_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_17_19_Closed_Text.style.display='none'; Codehighlighter1_17_19_Open_Image.style.display='inline'; Codehighlighter1_17_19_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);"> Fruit() </span><span id="Codehighlighter1_17_19_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="../../Images/dot.gif" /></span><span id="Codehighlighter1_17_19_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: rgb(0, 0, 0);"><br /><img src="../../Images/OutliningIndicators/None.gif" align="top" />Fruit.prototype.name </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">apple</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br /><img src="../../Images/OutliningIndicators/None.gif" align="top" />Fruit.prototype.number </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">5</span><span style="color: rgb(0, 0, 0);">;<br /><img id="Codehighlighter1_119_141_Open_Image" onclick="this.style.display='none'; Codehighlighter1_119_141_Open_Text.style.display='none'; Codehighlighter1_119_141_Closed_Image.style.display='inline'; Codehighlighter1_119_141_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_119_141_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_119_141_Closed_Text.style.display='none'; Codehighlighter1_119_141_Open_Image.style.display='inline'; Codehighlighter1_119_141_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top" />Fruit.prototype.showName </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">() </span><span id="Codehighlighter1_119_141_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="../../Images/dot.gif" /></span><span id="Codehighlighter1_119_141_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />  alert(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.name);<br /><img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: rgb(0, 0, 0);">;<br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /><br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> fruit1 </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Fruit();<br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> fruit2 </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Fruit();</span></div><br />    但是，这样同样存在一些缺点。首先，构造函数中没有参数，给初始化带来一些麻烦，其次，当一个属性指向的是一个对象而非方法时，该对象会被所有的实例所共享，任何一点改动都会影响到其他对象引用的使用。<br /><br />5.4  混合使用工厂方法和Prototype<br /><br />这个概念很简单：使用构造函数定义所有除方法外的属性，使用 prototype 定义对象的方法。这样每个方法只会被创建一次，每个对象都能拥有自己对象实例的属性。<br /><br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><img id="Codehighlighter1_29_119_Open_Image" onclick="this.style.display='none'; Codehighlighter1_29_119_Open_Text.style.display='none'; Codehighlighter1_29_119_Closed_Image.style.display='inline'; Codehighlighter1_29_119_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_29_119_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_29_119_Closed_Text.style.display='none'; Codehighlighter1_29_119_Open_Image.style.display='inline'; Codehighlighter1_29_119_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);"> Fruit(name, number) </span><span id="Codehighlighter1_29_119_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="../../Images/dot.gif" /></span><span id="Codehighlighter1_29_119_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />  </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.name </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> name;<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />  </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.number </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> number;<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />  </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.owner </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Array(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Jerry</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Terry</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br /><img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: rgb(0, 0, 0);"><br /><img id="Codehighlighter1_159_181_Open_Image" onclick="this.style.display='none'; Codehighlighter1_159_181_Open_Text.style.display='none'; Codehighlighter1_159_181_Closed_Image.style.display='inline'; Codehighlighter1_159_181_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_159_181_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_159_181_Closed_Text.style.display='none'; Codehighlighter1_159_181_Open_Image.style.display='inline'; Codehighlighter1_159_181_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top" />Fruit.prototype.showName </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">() </span><span id="Codehighlighter1_159_181_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="../../Images/dot.gif" /></span><span id="Codehighlighter1_159_181_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />  alert(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.name);<br /><img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: rgb(0, 0, 0);">;<br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /><br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> Fruit1 </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Fruit(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">apple</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 0);">5</span><span style="color: rgb(0, 0, 0);">);<br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> Fruit2 </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Fruit(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">pear</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 0);">3</span><span style="color: rgb(0, 0, 0);">);</span></div><br />5.5  动态 prototype<br /><br />    简单来说，这种方法就是使用了一个标识符来判断 prototype 是否已经被指向某个方法，从而保证这些方法只会被创建并指向一次。<br /><br />5.6  混合工厂方法<br /><br />    这种方法和经典的工厂方法及构造函数方法在对象方法内存管理上存在同样的问题，一般不建议使用该方法，除了某些特殊情况（XML in JavaScript中有这样的例子）。<br /><br /><font size="3"><strong>6  修改对象<br /></strong></font><br />    使用prototype对象可以对对象进行修改。除了用户自定义的对象外，ECMAScript原始对象也有prototype属性。直接使用 prototype可以给对象创建新的方法。<br /><br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><img id="Codehighlighter1_42_72_Open_Image" onclick="this.style.display='none'; Codehighlighter1_42_72_Open_Text.style.display='none'; Codehighlighter1_42_72_Closed_Image.style.display='inline'; Codehighlighter1_42_72_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_42_72_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_42_72_Closed_Text.style.display='none'; Codehighlighter1_42_72_Open_Image.style.display='inline'; Codehighlighter1_42_72_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: rgb(0, 0, 0);">Number.prototype.toHexString </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">() </span><span id="Codehighlighter1_42_72_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="../../Images/dot.gif" /></span><span id="Codehighlighter1_42_72_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />  </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.toString(</span><span style="color: rgb(0, 0, 0);">16</span><span style="color: rgb(0, 0, 0);">);<br /><img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: rgb(0, 0, 0);">;<br /><img src="../../Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> iNum </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">10</span><span style="color: rgb(0, 0, 0);">;<br /><img src="../../Images/OutliningIndicators/None.gif" align="top" />alert(iNum.toHexString());  </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">输出A</span></div><br />   
另外，使用prototype可以轻松修改已有的方法，让方法名指向新的方法。需要注意的是，指向新的方法后，原有的方法不再被任何对象使用，将会被垃圾
回收器销毁，使得原有方法不再存在。比较安全的解决办法是，建立一个新的引用来保存原有的方法，然后再将原方法覆盖。<br /><br />   
比较特殊的是，ECMAScript中创建对象，在对象引用被创建后，可以给对象加入新的方法，并且可以立即在对象的引用中使用。这是
ECMAScript的一个特性，但不推荐这样使用，以免带来不必要的麻烦，例如阅读理解、文档资料等。</font>
		</font>
<img src ="http://www.blogjava.net/hszdz/aggbug/58418.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hszdz/" target="_blank">爪哇之家</a> 2006-07-16 13:28 <a href="http://www.blogjava.net/hszdz/articles/58418.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript 调试工具</title><link>http://www.blogjava.net/hszdz/articles/58416.html</link><dc:creator>爪哇之家</dc:creator><author>爪哇之家</author><pubDate>Sun, 16 Jul 2006 05:27:00 GMT</pubDate><guid>http://www.blogjava.net/hszdz/articles/58416.html</guid><description><![CDATA[
		<font face="Verdana" size="2">JavaScript代码看起来总是要比Java、C#乱的多，可能是自己还不熟悉JavaScript编程，因此一款优秀的JavaScript调试器就显得格外重要。目前在网络和书上见到最多的有：<br /><br />   
Microsoft Script Debugger:
集成在IE中的一款很原始的调试工具，具备基本的调试功能，除了可以用于调试客户端脚本，还能调试在Microsoft
IIS上运行的服务器端脚本。该工具命令窗口是基于文本的，针对VBScript和IE环境进行调试会更加适用。 <br />  <br />    Firefox JavaScript Console: 可以记录JavaScript中出现的所有警告和错误，诊断出大多数错误。工具比较简单实用。 <br />  <br />   
Venkman:
一个基于Mozilla的浏览器的JavaScript调试环境，是Mozilla浏览器的一个扩展。Venkman基于Mozilla
JavaScript调试API（js/jsd），js/jsd API 构成了 Netscape JavaScript Debugger
1.1的基础，Netscape浏览器4.x系统都提供了这个调试工具。Venkman是目前比较流行的JavaScript调试工具。<br /><br />    相关下载：<br /><br />    <a href="http://www.hacksrus.com/%7Eginda/venkman/"><font color="#000080">http://www.hacksrus.com/~ginda/venkman/</font></a><br />    上面最新的版本是0.9.85，对于Firefox只能支持1.5以前的版本。<br /><br />    <a href="https://dwr.dev.java.net/files/documents/2427/22010/venkman-0.9.85.jw2.xpi"><font color="#000080">https://dwr.dev.java.net/files/documents/2427/22010/venkman-0.9.85.jw2.xpi</font></a><br />    venkman-0.9.85.jw2.xpi是venkman-0.9.85xpi的修改版本，可以支持Firefox 1.5.0。 <br /><br />    <a href="https://addons.mozilla.org/firefox/216/"><font color="#000080">https://addons.mozilla.org/firefox/216/</font></a><br />   
在Mozilla官方站点上，venkman有了另外的一个名称——JavaScript
Debugger，已经发布了0.9.87版本，支持Firefox 0.9-3.0，Mozilla 1.0-1.8，Thunderbird
0.9-3.0的所有版本浏览器。<br />    除了官方网站外，该工具的扩展安装也可以通过链接<br />    <a href="../../Files/flyingis/javascript_debugger-0.9.87.rar"><font color="#000080">http://www.blogjava.net/Files/flyingis/javascript_debugger-0.9.87.rar</font></a>进行本地下载。<br />  <br />    另外有一些JavaScript专用IDE，有兴趣可以试用一下：<br />  <br />    Cardinal JavaScript IDE:<br />    <a href="http://home.earthlink.net/%7Emafriedman/ide/"><font color="#000080">http://home.earthlink.net/~mafriedman/ide/</font></a><br /><br />    JavaScript IDE for Eclipse:<br />    <a href="http://www.basement.org/archives/2005/09/js_eclipse_javascript_ide%20for.html"><font color="#000080">http://www.basement.org/archives/2005/09/js_eclipse_javascript_ide for.html</font></a><br /><br />    JavaScript IDE(共享软件):<br />    <a href="http://www.downloadjunction.com/product/software/42264/index.html"><font color="#000080">http://www.downloadjunction.com/product/software/42264/index.html</font></a></font>
<img src ="http://www.blogjava.net/hszdz/aggbug/58416.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hszdz/" target="_blank">爪哇之家</a> 2006-07-16 13:27 <a href="http://www.blogjava.net/hszdz/articles/58416.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ECMAScript基础</title><link>http://www.blogjava.net/hszdz/articles/58415.html</link><dc:creator>爪哇之家</dc:creator><author>爪哇之家</author><pubDate>Sun, 16 Jul 2006 05:26:00 GMT</pubDate><guid>http://www.blogjava.net/hszdz/articles/58415.html</guid><description><![CDATA[
		<font size="2">
				<font face="Verdana">  JavaScript的核心之一ECMAScript的语言特性和Java、C、Perl都有许多相似之处，其中不少特性都是从这些语言借鉴而来，同时它们之间也存在许多差异。下面列举一些ECMAScript的基本特性。<br /><br />    --和Java一样，ECMAScript区分大小写，注释的格式相同，通过{}确定代码块，原始数据类型存储在堆栈，对象的引用存储在堆中<br />    --ECMAScript是一种松散的语言，ECMAScript通过var操作符声明变量，并且不限类型，例如var n = 25，那么n就是数字类型，var n = "string" ，那么n就是String类型<br />    --在每一行代码后，可以不写分号，ECMAScript自动认为该行的末尾为该行代码的最后；ECMAScript中的变量可以不用初始化，在幕后系统将自动完成初始化操作<br />    --同一变量可以赋予不同类型的数据；变量的第一个字符只能是字母、下划线或$ ，其他的字符可以是下划线、$、或任意的字母、数字、字符<br />    --和其他语言一样，变量最好遵循驼峰书写法，或Pascal表示法、或匈牙利表示法<br />    --和大多数语言不同的是， ECMAScript 变量在使用之前可以不必声明，系统会自动将该变量声明为全局变量，例如var m = </font>
		</font>
		<font face="Verdana">
				<font size="2">"</font>
				<font size="2">Good</font>
				<font size="2">"</font>
				<font size="2">; n = m + </font>
				<font size="2">"</font>
				<font size="2">Morning</font>
				<font size="2">"</font>
				<font size="2">; alert(n)输出结构是</font>
				<font size="2">"</font>
				<font size="2">Good Morning</font>
				<font size="2">"</font>
		</font>
		<font size="2">
				<br />
				<font face="Verdana">    --在大多数语言里，String是对象，在ECMAScript中却是原始数据类型<br /><br /><b>    原始数据类型 </b><br /><b>  </b><br />    ECMAScript原始数据类型有五种：Undefined、Null、Boolean、Number、String。<br /><br />    typeof—判断变量和值的数据类型，通常有undefined、boolean、number、string、object五种类型。<br />    Undefined—当变量被声明但没有初始化，或函数没有明确返回一个值的时候，该变量或函数即为 Undefined 类型。<br />    Null—undefined是null的一种派生，当代表一个对象的值不存在时，该对象返回null。<br />    Boolean—包含两个值，true and false ， false不等于0，但0可以转换为false 。<br />   
Number—可以定义32位整型数据或64位浮点型数据。定义数字类型变量时，在数字前加0即为八进制，加0x为十六进制，它们计算后返回的结果统一为
十进制。通过var f = 1.0可以定义一个浮点类型变量，有意思的是，当f被用于计算之前，它实际是以
String类型存储的。当浮点类型数据很大或很小时（可以前后移动六位），将使用E表示法来表示浮点数据，最大可以存储17位数据。另外，
isFinite()方法可以判断一个数值是否有限，isNaN()方法可以判断一个数据是非数字类型。<br />    String—String在ECMAScript中是原始数据类型，并且是唯一没有空间大小限制的数据类型。和Java不同的是，var s = </font>
		</font>
		<font face="Verdana">
				<font size="2">"</font>
				<font size="2">javascript</font>
				<font size="2">"</font>
		</font>
		<font face="Verdana" size="2">和var s = 'javascript'均是合法的表示方法。<br /><br /><b>    数据转换 </b><br />  <br />   
在不同数据类型之间转换是任何一门编程语言的一个重要特性，ECMAScript提供了一系列简单的方法来实现数据的转换，大多数数据类型都提供了简单的
转换方法，对于复杂的转换则有一些全局方法来完成，不管是哪一种方法，ECMAScript中数据转换都非常简单。 <br /><br />   
Boolean、number和string数据类型是原始数据类型，但它们同时是伪对象（在ECMAScript中伪对象到底该怎么解释，运行机制如何
还不清楚？有人知道请给予解答），拥有自己的属性和方法，可以通过toString()方法来实现string类型的转换。ECMAScript定义所有
的对象，不管是伪对象还是真实的对象，都可以实现toString()方法，string被列为伪对象的行列，自然也拥有toString()方法。将数
字类型数据转换为string的时候，可以在 toString() 方法中加入2、8、16参数，来实现不同进制的数据输出，例如var n =
10;
alert(n.toString(2))输出为1010，alert(n.toString(8))输出为12，n.toString()和
n.toString(10)相同。 <br />  <br />    ECMAScript提供了两种方法来实现string类型转化为数字类型的方法：parseInt()和parseFloat()。其他类型转换将会返回 NaN（Not a Number）。<br /><br /><b>    Type Casting</b><br /><br />    ECMAScript数据类型的转换通常可以通过三个方法来实现：Boolean(value)、Number(value)和String(value)，这样通常会产生一些非预期的结果。<br /><br />    Boolean<br /><br /></font>
		<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);">
				<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
				<font face="Verdana">
						<span style="color: rgb(0, 0, 0);">var b1 </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);">Boolean(</span>
						<span style="color: rgb(0, 0, 0);">""</span>
						<span style="color: rgb(0, 0, 0);">); </span>
						<span style="color: rgb(0, 128, 0);">//</span>
						<span style="color: rgb(0, 128, 0);">false–empty string</span>
				</font>
				<span style="color: rgb(0, 128, 0);">
						<br />
				</span>
				<font face="Verdana">
						<span style="color: rgb(0, 0, 0);">var b2</span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);">Boolean(</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">hi</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">); </span>
						<span style="color: rgb(0, 128, 0);">//</span>
						<span style="color: rgb(0, 128, 0);">true–non-empty string</span>
				</font>
				<span style="color: rgb(0, 128, 0);">
						<br />
				</span>
				<font face="Verdana">
						<span style="color: rgb(0, 0, 0);">var b3</span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);">Boolean(</span>
						<span style="color: rgb(0, 0, 0);">100</span>
						<span style="color: rgb(0, 0, 0);">); </span>
						<span style="color: rgb(0, 128, 0);">//</span>
						<span style="color: rgb(0, 128, 0);">true–non-zero number</span>
				</font>
				<span style="color: rgb(0, 128, 0);">
						<br />
				</span>
				<font face="Verdana">
						<span style="color: rgb(0, 0, 0);">var b4 </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);">Boolean(</span>
						<span style="color: rgb(0, 0, 255);">null</span>
						<span style="color: rgb(0, 0, 0);">); </span>
						<span style="color: rgb(0, 128, 0);">//</span>
						<span style="color: rgb(0, 128, 0);">false-null</span>
				</font>
				<span style="color: rgb(0, 128, 0);">
						<br />
				</span>
				<font face="Verdana">
						<span style="color: rgb(0, 0, 0);">var b5</span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);">Boolean(</span>
						<span style="color: rgb(0, 0, 0);">0</span>
						<span style="color: rgb(0, 0, 0);">); </span>
						<span style="color: rgb(0, 128, 0);">//</span>
						<span style="color: rgb(0, 128, 0);">false-zero</span>
				</font>
				<span style="color: rgb(0, 128, 0);">
						<br />
				</span>
				<font face="Verdana">
						<span style="color: rgb(0, 0, 0);">var b6</span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);">Boolean(</span>
						<span style="color: rgb(0, 0, 255);">new</span>
						<span style="color: rgb(0, 0, 0);">Object()); </span>
						<span style="color: rgb(0, 128, 0);">//</span>
						<span style="color: rgb(0, 128, 0);">true–object</span>
				</font>
		</div>
		<font size="2">
				<br />
				<font face="Verdana">    Number <br /></font>
		</font>
		<br />
		<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);">
				<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
				<font face="Verdana">
						<span style="color: rgb(0, 0, 0);">Number(</span>
						<span style="color: rgb(0, 0, 255);">false</span>
						<span style="color: rgb(0, 0, 0);">)  </span>
						<span style="color: rgb(0, 0, 0);">0</span>
				</font>
				<span style="color: rgb(0, 0, 0);">
						<br />
						<font face="Verdana">Number(</font>
				</span>
				<font face="Verdana">
						<span style="color: rgb(0, 0, 255);">true</span>
						<span style="color: rgb(0, 0, 0);">)  </span>
						<span style="color: rgb(0, 0, 0);">1</span>
				</font>
				<span style="color: rgb(0, 0, 0);">
						<br />
						<font face="Verdana">Number(undefined) NaN<br />Number(</font>
				</span>
				<font face="Verdana">
						<span style="color: rgb(0, 0, 255);">null</span>
						<span style="color: rgb(0, 0, 0);">) </span>
						<span style="color: rgb(0, 0, 0);">0</span>
				</font>
				<span style="color: rgb(0, 0, 0);">
						<br />
						<font face="Verdana">Number(</font>
				</span>
				<font face="Verdana">
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">5.5</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">) </span>
						<span style="color: rgb(0, 0, 0);">5.5</span>
				</font>
				<span style="color: rgb(0, 0, 0);">
						<br />
						<font face="Verdana">Number(</font>
				</span>
				<font face="Verdana">
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">56</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">) </span>
						<span style="color: rgb(0, 0, 0);">56</span>
				</font>
				<span style="color: rgb(0, 0, 0);">
						<br />
						<font face="Verdana">Number(</font>
				</span>
				<font face="Verdana">
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">5.6.7</span>
						<span style="color: rgb(0, 0, 0);">"</span>
				</font>
				<font face="Verdana">
						<span style="color: rgb(0, 0, 0);">) NaN<br />Number(</span>
						<span style="color: rgb(0, 0, 255);">new</span>
				</font>
				<font face="Verdana">
						<span style="color: rgb(0, 0, 0);">Object()) NaN<br />Number(</span>
						<span style="color: rgb(0, 0, 0);">100</span>
						<span style="color: rgb(0, 0, 0);">)  </span>
						<span style="color: rgb(0, 0, 0);">100</span>
				</font>
		</div>
		<br />
		<font size="2">
				<font face="Verdana">    String<br /><br />    String()能实现所有类型数据的直接转换，和使用toString()不同的是，String()能够将null或undefined数据转换为string。<br /><br /><b>    引用类型</b><br /><br />    ECMAScript 实际上并没有传统意义上的类，只是通过定义对象来等同于其他语言中的类，这一点我还比较含糊，以后可能会明白，在文中还是以“类”来说明。<br /><br /></font>
				<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);">
						<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
						<font face="Verdana">
								<span style="color: rgb(0, 0, 255);">var</span>
								<span style="color: rgb(0, 0, 0);"> ob </span>
								<span style="color: rgb(0, 0, 0);">=</span>
								<span style="color: rgb(0, 0, 0);"> </span>
								<span style="color: rgb(0, 0, 255);">new</span>
								<span style="color: rgb(0, 0, 0);"> Object();</span>
						</font>
				</div>
				<br />
				<font face="Verdana">   
以上定义了一个Object对象的实例，这种语法和Java比较类似。当有参数的时候需要括号来引用，当不存在参数时，括号可以去掉。由于
ECMAScript语言比较松散，不管是前面所属的基础语法，还是后面将提到的语法知识，我们都应该尽量按照一定的书写规范来约定自己的代码格式，而不
应充分发挥语言松散的特点。<br /><br />    Object类<br /><br />    Object类和Java里的java.lang.Object类比较相似，它是ECMAScript中其他所有类的基类，它具有如下属性：<br /><br />    constructor—建立对象的函数的一个引用，对于Object类而言，该引用指向本地Object()方法。<br />    prototype—对象里prototype对象的一个引用值。<br /><br />    Object 类拥有的方法：<br /><br />    hasOwnProperty(property)—判断property属性是否存在于对象中，property数据类型为string<br />    isPrototypeOf(object)— 判断一个对象是否是另一对象的 prototype<br />    propertyIsEnumerable(property)— 判断所给出的属性能否使用 for 语句列举出来<br />    toString()—返回对象的原始类型string<br />    valueOf()—返回对象合适的原始值，对于多数类而言，返回的值和toString()相同<br />    Object类的每一个属性和方法都被其他的类所重写<br /><br />    Boolean类<br /><br />   
定义方法var ob = new Boolean(true);
ob是Boolean原始数据类型的一个引用。在使用Boolean对象过程中，需要注意，所有的对象会自动转变为true，因此var ob1 =
new Boolean(false);  var ob2 = ob1 &amp;&amp; true;
最后ob2的值是true，非false。一般情况下，使用Boolean原始数据类型可以避免这种情况。<br /><br />    Number类<br /><br />    定义方法var o = new Number(15);<br />    获得原始数据的值var n = o.valueOf();<br /><br />    Number类有一些为数字类型的值特别设计的方法：<br /><br /></font>
				<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);">
						<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
						<font face="Verdana">
								<span style="color: rgb(0, 0, 0);">alert(o.toFixed(</span>
								<span style="color: rgb(0, 0, 0);">2</span>
								<span style="color: rgb(0, 0, 0);">));  </span>
								<span style="color: rgb(0, 128, 0);">//</span>
								<span style="color: rgb(0, 128, 0);">输出15.00</span>
						</font>
						<span style="color: rgb(0, 128, 0);">
								<br />
						</span>
						<font face="Verdana">
								<span style="color: rgb(0, 0, 0);">alert(o.toExponential(</span>
								<span style="color: rgb(0, 0, 0);">1</span>
								<span style="color: rgb(0, 0, 0);">));  </span>
								<span style="color: rgb(0, 128, 0);">//</span>
								<span style="color: rgb(0, 128, 0);">输出1.5e+1</span>
						</font>
				</div>
				<br />
				<font face="Verdana">    在无法确定使用 toFixed 还是 toExponential 的时候，可以使用 toPrecision 方法来获得取值：<br /><br /></font>
				<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);">
						<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
						<font face="Verdana">
								<span style="color: rgb(0, 0, 0);">alert(o.toPrecision(</span>
								<span style="color: rgb(0, 0, 0);">1</span>
								<span style="color: rgb(0, 0, 0);">));  </span>
								<span style="color: rgb(0, 128, 0);">//</span>
								<span style="color: rgb(0, 128, 0);">输出 2e+1</span>
						</font>
						<span style="color: rgb(0, 128, 0);">
								<br />
						</span>
						<font face="Verdana">
								<span style="color: rgb(0, 0, 0);">alert(o.toPrecision(</span>
								<span style="color: rgb(0, 0, 0);">2</span>
								<span style="color: rgb(0, 0, 0);">));  </span>
								<span style="color: rgb(0, 128, 0);">//</span>
								<span style="color: rgb(0, 128, 0);">输出 15</span>
						</font>
						<span style="color: rgb(0, 128, 0);">
								<br />
						</span>
						<font face="Verdana">
								<span style="color: rgb(0, 0, 0);">alert(o.toPrecision(</span>
								<span style="color: rgb(0, 0, 0);">3</span>
								<span style="color: rgb(0, 0, 0);">));  </span>
								<span style="color: rgb(0, 128, 0);">//</span>
								<span style="color: rgb(0, 128, 0);">输出 15.0</span>
						</font>
				</div>
				<br />
				<font face="Verdana">    String类<br /><br />    String类是一种复杂引用类型，这里仅列出一些常见的方法，其中不少都是模仿java.lang.String：<br /><br /></font>
		</font>
		<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);">
				<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
				<font face="Verdana">
						<span style="color: rgb(0, 0, 255);">var</span>
						<span style="color: rgb(0, 0, 0);"> s </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 255);">new</span>
						<span style="color: rgb(0, 0, 0);"> String(</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">Good Morning</span>
						<span style="color: rgb(0, 0, 0);">"</span>
				</font>
				<font face="Verdana">
						<span style="color: rgb(0, 0, 0);">);<br />alert(s.valueOf() </span>
						<span style="color: rgb(0, 0, 0);">==</span>
						<span style="color: rgb(0, 0, 0);"> s.toString());  </span>
						<span style="color: rgb(0, 128, 0);">//</span>
						<span style="color: rgb(0, 128, 0);">输出true</span>
				</font>
				<span style="color: rgb(0, 128, 0);">
						<br />
				</span>
				<font face="Verdana">
						<span style="color: rgb(0, 0, 0);">alert(s.length);  </span>
						<span style="color: rgb(0, 128, 0);">//</span>
						<span style="color: rgb(0, 128, 0);">输出12</span>
				</font>
				<span style="color: rgb(0, 128, 0);">
						<br />
				</span>
				<font face="Verdana">
						<span style="color: rgb(0, 0, 0);">alert(s.charAt(</span>
						<span style="color: rgb(0, 0, 0);">1</span>
						<span style="color: rgb(0, 0, 0);">));  </span>
						<span style="color: rgb(0, 128, 0);">//</span>
						<span style="color: rgb(0, 128, 0);">输出o</span>
				</font>
				<span style="color: rgb(0, 128, 0);">
						<br />
				</span>
				<font face="Verdana">
						<span style="color: rgb(0, 0, 255);">var</span>
						<span style="color: rgb(0, 0, 0);"> sr </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> s.concat(</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);"> !</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">); alert(sr);  </span>
						<span style="color: rgb(0, 128, 0);">//</span>
						<span style="color: rgb(0, 128, 0);">输出Good morning !</span>
				</font>
				<span style="color: rgb(0, 128, 0);">
						<br />
				</span>
				<font face="Verdana">
						<span style="color: rgb(0, 0, 0);">alert(s.indexOf(</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">o</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">);  </span>
						<span style="color: rgb(0, 128, 0);">//</span>
						<span style="color: rgb(0, 128, 0);">输出1</span>
				</font>
				<span style="color: rgb(0, 128, 0);">
						<br />
				</span>
				<font face="Verdana">
						<span style="color: rgb(0, 0, 0);">alert(s.lastIndexOf(</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">o</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">);  </span>
						<span style="color: rgb(0, 128, 0);">//</span>
						<span style="color: rgb(0, 128, 0);">输出6</span>
				</font>
				<span style="color: rgb(0, 128, 0);">
						<br />
				</span>
				<font face="Verdana">
						<span style="color: rgb(0, 0, 0);">alert(s.localeCompare(Good morning));  </span>
						<span style="color: rgb(0, 128, 0);">//</span>
						<span style="color: rgb(0, 128, 0);">输出0</span>
				</font>
				<span style="color: rgb(0, 128, 0);">
						<br />
				</span>
				<font face="Verdana">
						<span style="color: rgb(0, 0, 0);">alert(s.localeCompare(Apple));  </span>
						<span style="color: rgb(0, 128, 0);">//</span>
						<span style="color: rgb(0, 128, 0);">输出1</span>
				</font>
				<span style="color: rgb(0, 128, 0);">
						<br />
				</span>
				<font face="Verdana">
						<span style="color: rgb(0, 0, 0);">alert(s.localeCompare(House));  </span>
						<span style="color: rgb(0, 128, 0);">//</span>
						<span style="color: rgb(0, 128, 0);">输出-1</span>
				</font>
				<span style="color: rgb(0, 128, 0);">
						<br />
				</span>
				<font face="Verdana">
						<span style="color: rgb(0, 0, 0);">alert(s.slice(</span>
						<span style="color: rgb(0, 0, 0);">2</span>
						<span style="color: rgb(0, 0, 0);">));  </span>
						<span style="color: rgb(0, 128, 0);">//</span>
						<span style="color: rgb(0, 128, 0);"> 输出od morning</span>
				</font>
				<span style="color: rgb(0, 128, 0);">
						<br />
				</span>
				<font face="Verdana">
						<span style="color: rgb(0, 0, 0);">alert(s.substring(</span>
						<span style="color: rgb(0, 0, 0);">2</span>
						<span style="color: rgb(0, 0, 0);">));  </span>
						<span style="color: rgb(0, 128, 0);">//</span>
						<span style="color: rgb(0, 128, 0);"> 输出od morning</span>
				</font>
				<span style="color: rgb(0, 128, 0);">
						<br />
				</span>
				<font face="Verdana">
						<span style="color: rgb(0, 0, 0);">alert(s.slice(</span>
						<span style="color: rgb(0, 0, 0);">2</span>
						<span style="color: rgb(0, 0, 0);">, </span>
						<span style="color: rgb(0, 0, 0);">-</span>
						<span style="color: rgb(0, 0, 0);">5</span>
						<span style="color: rgb(0, 0, 0);">));  </span>
						<span style="color: rgb(0, 128, 0);">//</span>
						<span style="color: rgb(0, 128, 0);"> 输出od mo</span>
				</font>
				<span style="color: rgb(0, 128, 0);">
						<br />
				</span>
				<font face="Verdana">
						<span style="color: rgb(0, 0, 0);">alert(s.substring(</span>
						<span style="color: rgb(0, 0, 0);">2</span>
						<span style="color: rgb(0, 0, 0);">, </span>
						<span style="color: rgb(0, 0, 0);">-</span>
						<span style="color: rgb(0, 0, 0);">5</span>
						<span style="color: rgb(0, 0, 0);">));  </span>
						<span style="color: rgb(0, 128, 0);">//</span>
						<span style="color: rgb(0, 128, 0);">输出Go</span>
				</font>
				<span style="color: rgb(0, 128, 0);">
						<br />
				</span>
				<font face="Verdana">
						<span style="color: rgb(0, 0, 0);">alert(s.toUpperCase());  </span>
						<span style="color: rgb(0, 128, 0);">//</span>
						<span style="color: rgb(0, 128, 0);">输出GOOD MORNING</span>
				</font>
				<span style="color: rgb(0, 128, 0);">
						<br />
				</span>
				<font face="Verdana">
						<span style="color: rgb(0, 0, 0);">alert(s.toLowerCase());  </span>
						<span style="color: rgb(0, 128, 0);">//</span>
						<span style="color: rgb(0, 128, 0);">输出good morning</span>
				</font>
		</div>
		<font size="2">
				<br />
				<font face="Verdana">    另外，所有String类的方法同样可以用于String原始数据类型，因为它是伪对象。<br /><br />    instanceof <br /><br />    instanceof操作符和typeof作用类似，不同的是，instanceof需要明确指定对象是否属于某种特定类型。例如<br /><br /></font>
		</font>
		<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);">
				<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
				<font face="Verdana">
						<span style="color: rgb(0, 0, 255);">var</span>
						<span style="color: rgb(0, 0, 0);"> s </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span style="color: rgb(0, 0, 255);">new</span>
						<span style="color: rgb(0, 0, 0);"> String(</span>
						<span style="color: rgb(0, 0, 0);">"</span>
						<span style="color: rgb(0, 0, 0);">Good morning !</span>
						<span style="color: rgb(0, 0, 0);">"</span>
				</font>
				<font face="Verdana">
						<span style="color: rgb(0, 0, 0);">);<br />alert(s </span>
						<span style="color: rgb(0, 0, 255);">instanceof</span>
						<span style="color: rgb(0, 0, 0);"> String);</span>
				</font>
		</div>
		<font size="2">
				<br />
				<font face="Verdana">
						<b>    操作符和语句</b>
						<br />
						<br />    ECMAScript 中大多数操作符、语句和 Java 都比较类似，但也有一些其特有的，如 label 语句， with 语句， for-in 语句等等。<br /><br /><b>    Functions</b><br /><br />    Functions是ECMAScript的核心，在任何时候任何地方都可以运行的一组代码语句。<br /><br /></font>
				<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);">
						<font face="Verdana">
								<img id="Codehighlighter1_45_60_Open_Image" onclick="this.style.display='none'; Codehighlighter1_45_60_Open_Text.style.display='none'; Codehighlighter1_45_60_Closed_Image.style.display='inline'; Codehighlighter1_45_60_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
								<img id="Codehighlighter1_45_60_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_45_60_Closed_Text.style.display='none'; Codehighlighter1_45_60_Open_Image.style.display='inline'; Codehighlighter1_45_60_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top" />
								<span style="color: rgb(0, 0, 255);">function</span>
								<span style="color: rgb(0, 0, 0);"> functionName(arg0, arg1, …… , argN) </span>
								<span id="Codehighlighter1_45_60_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">
										<img src="../../Images/dot.gif" />
								</span>
						</font>
						<span id="Codehighlighter1_45_60_Open_Text">
								<span style="color: rgb(0, 0, 0);">
										<font face="Verdana">{<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />  statements<br /><img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</font>
								</span>
						</span>
				</div>
				<br />
				<font face="Verdana">    当function没有返回值或return语句后没有值的时候，该function实际上会被系统定义为undefined，当function返回值的时候，function可以不必明确指定为某种数据类型。<br /><br />    关于重载<br /><br />   
重载是面向对象语言的基本特性之一，但 ECMAScript 的 functions
并不能重载，在同一范围里可以定义两个完全相同的函数，在调用函数的时候，最后的一个函数发挥作用。这种特性比较麻烦，但可以通过 arguments
对象来实现和重载类似的功能。<br /><br /></font>
				<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);">
						<font face="Verdana">
								<img id="Codehighlighter1_16_163_Open_Image" onclick="this.style.display='none'; Codehighlighter1_16_163_Open_Text.style.display='none'; Codehighlighter1_16_163_Closed_Image.style.display='inline'; Codehighlighter1_16_163_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
								<img id="Codehighlighter1_16_163_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_16_163_Closed_Text.style.display='none'; Codehighlighter1_16_163_Open_Image.style.display='inline'; Codehighlighter1_16_163_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top" />
								<span style="color: rgb(0, 0, 255);">function</span>
								<span style="color: rgb(0, 0, 0);"> func() </span>
								<span id="Codehighlighter1_16_163_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">
										<img src="../../Images/dot.gif" />
								</span>
						</font>
						<span id="Codehighlighter1_16_163_Open_Text">
								<font face="Verdana">
										<span style="color: rgb(0, 0, 0);">{<br /><img id="Codehighlighter1_46_79_Open_Image" onclick="this.style.display='none'; Codehighlighter1_46_79_Open_Text.style.display='none'; Codehighlighter1_46_79_Closed_Image.style.display='inline'; Codehighlighter1_46_79_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_46_79_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_46_79_Closed_Text.style.display='none'; Codehighlighter1_46_79_Open_Image.style.display='inline'; Codehighlighter1_46_79_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  </span>
										<span style="color: rgb(0, 0, 255);">if</span>
										<span style="color: rgb(0, 0, 0);">(arguments.length </span>
										<span style="color: rgb(0, 0, 0);">==</span>
										<span style="color: rgb(0, 0, 0);"> </span>
										<span style="color: rgb(0, 0, 0);">1</span>
										<span style="color: rgb(0, 0, 0);">) </span>
										<span id="Codehighlighter1_46_79_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">
												<img src="../../Images/dot.gif" />
										</span>
								</font>
								<span id="Codehighlighter1_46_79_Open_Text">
										<font face="Verdana">
												<span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />    alert(arguments[</span>
												<span style="color: rgb(0, 0, 0);">0</span>
												<span style="color: rgb(0, 0, 0);">] </span>
												<span style="color: rgb(0, 0, 0);">+</span>
												<span style="color: rgb(0, 0, 0);"> </span>
												<span style="color: rgb(0, 0, 0);">5</span>
										</font>
										<span style="color: rgb(0, 0, 0);">
												<font face="Verdana">);<br /><img id="Codehighlighter1_113_161_Open_Image" onclick="this.style.display='none'; Codehighlighter1_113_161_Open_Text.style.display='none'; Codehighlighter1_113_161_Closed_Image.style.display='inline'; Codehighlighter1_113_161_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_113_161_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_113_161_Closed_Text.style.display='none'; Codehighlighter1_113_161_Open_Image.style.display='inline'; Codehighlighter1_113_161_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  }</font>
										</span>
								</span>
								<font face="Verdana">
										<span style="color: rgb(0, 0, 0);"> </span>
										<span style="color: rgb(0, 0, 255);">else</span>
										<span style="color: rgb(0, 0, 0);"> </span>
										<span style="color: rgb(0, 0, 255);">if</span>
										<span style="color: rgb(0, 0, 0);"> (arguments.length </span>
										<span style="color: rgb(0, 0, 0);">==</span>
										<span style="color: rgb(0, 0, 0);"> </span>
										<span style="color: rgb(0, 0, 0);">2</span>
										<span style="color: rgb(0, 0, 0);">) </span>
										<span id="Codehighlighter1_113_161_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">
												<img src="../../Images/dot.gif" />
										</span>
								</font>
								<span id="Codehighlighter1_113_161_Open_Text">
										<font face="Verdana">
												<span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />      alert(arguments[</span>
												<span style="color: rgb(0, 0, 0);">0</span>
												<span style="color: rgb(0, 0, 0);">] </span>
												<span style="color: rgb(0, 0, 0);">+</span>
												<span style="color: rgb(0, 0, 0);"> arguments[</span>
												<span style="color: rgb(0, 0, 0);">1</span>
										</font>
										<span style="color: rgb(0, 0, 0);">
												<font face="Verdana">]);<br /><img src="../../Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</font>
										</span>
								</span>
								<span style="color: rgb(0, 0, 0);">
										<br />
										<font face="Verdana">
												<img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</font>
								</span>
						</span>
						<span style="color: rgb(0, 0, 0);">
								<br />
								<font face="Verdana">
										<img src="../../Images/OutliningIndicators/None.gif" align="top" />
										<br />
										<img src="../../Images/OutliningIndicators/None.gif" align="top" />func(</font>
						</span>
						<font face="Verdana">
								<span style="color: rgb(0, 0, 0);">5</span>
								<span style="color: rgb(0, 0, 0);">);  </span>
								<span style="color: rgb(0, 128, 0);">//</span>
								<span style="color: rgb(0, 128, 0);">输出10</span>
						</font>
						<span style="color: rgb(0, 128, 0);">
								<br />
								<font face="Verdana">
										<img src="../../Images/OutliningIndicators/None.gif" align="top" />
								</font>
						</span>
						<font face="Verdana">
								<span style="color: rgb(0, 0, 0);">func(</span>
								<span style="color: rgb(0, 0, 0);">10</span>
								<span style="color: rgb(0, 0, 0);">, </span>
								<span style="color: rgb(0, 0, 0);">15</span>
								<span style="color: rgb(0, 0, 0);">);  </span>
								<span style="color: rgb(0, 128, 0);">//</span>
								<span style="color: rgb(0, 128, 0);">输出25</span>
						</font>
				</div>
				<br />
				<font face="Verdana">    前面提到过，在同一范围里可以定义两个完全相同的function，在调用function的时候，最后的一个function发挥作用。<br /> <br /></font>
				<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);">
						<font face="Verdana">
								<img id="Codehighlighter1_17_36_Open_Image" onclick="this.style.display='none'; Codehighlighter1_17_36_Open_Text.style.display='none'; Codehighlighter1_17_36_Closed_Image.style.display='inline'; Codehighlighter1_17_36_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
								<img id="Codehighlighter1_17_36_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_17_36_Closed_Text.style.display='none'; Codehighlighter1_17_36_Open_Image.style.display='inline'; Codehighlighter1_17_36_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top" />
								<span style="color: rgb(0, 0, 255);">function</span>
								<span style="color: rgb(0, 0, 0);"> func(i) </span>
								<span id="Codehighlighter1_17_36_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">
										<img src="../../Images/dot.gif" />
								</span>
						</font>
						<span id="Codehighlighter1_17_36_Open_Text">
								<font face="Verdana">
										<span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />  alert(i </span>
										<span style="color: rgb(0, 0, 0);">+</span>
										<span style="color: rgb(0, 0, 0);"> </span>
										<span style="color: rgb(0, 0, 0);">10</span>
								</font>
								<span style="color: rgb(0, 0, 0);">
										<font face="Verdana">);<br /><img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</font>
								</span>
						</span>
						<span style="color: rgb(0, 0, 0);">
								<br />
								<font face="Verdana">
										<img id="Codehighlighter1_55_74_Open_Image" onclick="this.style.display='none'; Codehighlighter1_55_74_Open_Text.style.display='none'; Codehighlighter1_55_74_Closed_Image.style.display='inline'; Codehighlighter1_55_74_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
										<img id="Codehighlighter1_55_74_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_55_74_Closed_Text.style.display='none'; Codehighlighter1_55_74_Open_Image.style.display='inline'; Codehighlighter1_55_74_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top" />
								</font>
						</span>
						<font face="Verdana">
								<span style="color: rgb(0, 0, 255);">function</span>
								<span style="color: rgb(0, 0, 0);"> func(i) </span>
								<span id="Codehighlighter1_55_74_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">
										<img src="../../Images/dot.gif" />
								</span>
						</font>
						<span id="Codehighlighter1_55_74_Open_Text">
								<font face="Verdana">
										<span style="color: rgb(0, 0, 0);">{<br /><img src="../../Images/OutliningIndicators/InBlock.gif" align="top" />  alert(i </span>
										<span style="color: rgb(0, 0, 0);">+</span>
										<span style="color: rgb(0, 0, 0);"> </span>
										<span style="color: rgb(0, 0, 0);">20</span>
								</font>
								<span style="color: rgb(0, 0, 0);">
										<font face="Verdana">);<br /><img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</font>
								</span>
						</span>
						<span style="color: rgb(0, 0, 0);">
								<br />
								<font face="Verdana">
										<img src="../../Images/OutliningIndicators/None.gif" align="top" />func(</font>
						</span>
						<font face="Verdana">
								<span style="color: rgb(0, 0, 0);">5</span>
								<span style="color: rgb(0, 0, 0);">);  </span>
								<span style="color: rgb(0, 128, 0);">//</span>
								<span style="color: rgb(0, 128, 0);">输出25</span>
						</font>
				</div>
				<br />
				<font face="Verdana">    可以看出，是调用了最后的一个function使得数据结果为25，如果使用Function类来定义以上两个函数，那为什么会使用最后的一个function可能会更明确一些。 <br /><br /></font>
				<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);">
						<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
						<font face="Verdana">
								<span style="color: rgb(0, 0, 255);">var</span>
								<span style="color: rgb(0, 0, 0);"> func </span>
								<span style="color: rgb(0, 0, 0);">=</span>
								<span style="color: rgb(0, 0, 0);"> </span>
								<span style="color: rgb(0, 0, 255);">new</span>
								<span style="color: rgb(0, 0, 0);"> Function(“i”, “alert(i </span>
								<span style="color: rgb(0, 0, 0);">+</span>
								<span style="color: rgb(0, 0, 0);"> </span>
								<span style="color: rgb(0, 0, 0);">10</span>
						</font>
						<font face="Verdana">
								<span style="color: rgb(0, 0, 0);">)”);<br /></span>
								<span style="color: rgb(0, 0, 255);">var</span>
								<span style="color: rgb(0, 0, 0);"> func </span>
								<span style="color: rgb(0, 0, 0);">=</span>
								<span style="color: rgb(0, 0, 0);"> </span>
								<span style="color: rgb(0, 0, 255);">new</span>
								<span style="color: rgb(0, 0, 0);"> Function(“i”, “alert(i </span>
								<span style="color: rgb(0, 0, 0);">+</span>
								<span style="color: rgb(0, 0, 0);"> </span>
								<span style="color: rgb(0, 0, 0);">20</span>
						</font>
						<font face="Verdana">
								<span style="color: rgb(0, 0, 0);">)”);<br />func(</span>
								<span style="color: rgb(0, 0, 0);">5</span>
								<span style="color: rgb(0, 0, 0);">);</span>
						</font>
				</div>
				<br />
				<font face="Verdana">    func指向了另外一个引用，从而值发生了改变，func是作为function对象的引用而存在的，并且允许两个变量指向同一个 function。<br /><br />    和Function类相关的属性、方法有许多，例如length、toString()、valueOf()等等。其中toString()在调试程序中使用较多。</font>
		</font>
<img src ="http://www.blogjava.net/hszdz/aggbug/58415.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hszdz/" target="_blank">爪哇之家</a> 2006-07-16 13:26 <a href="http://www.blogjava.net/hszdz/articles/58415.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript基本组成</title><link>http://www.blogjava.net/hszdz/articles/58413.html</link><dc:creator>爪哇之家</dc:creator><author>爪哇之家</author><pubDate>Sun, 16 Jul 2006 05:25:00 GMT</pubDate><guid>http://www.blogjava.net/hszdz/articles/58413.html</guid><description><![CDATA[
		<font size="2">   <font color="#0000ff">JavaScript的学习，以</font><a class="" title="" href="http://www.nczonline.net/" target="_blank"><font color="#a52a2a">Nicholas C.Zakas</font></a><font color="#0000ff">的《Professional JavaScript for Web Developers》为核心材料。</font><br /><br />    JavaScript作为一种网络客户端的脚本语言，由以下三部分组成：<br /><br />1.  ECMAScript--JavaScript的核心，描述了语言的基本语法和对象。<br /><br />    ECMAScript经历了三个版本的更新，现在大多数网络浏览器都支持Edition3。ECMAScript主要提供语言相关的信息与标准，如语法、类型、声明、关键字、保留字、操作运算符、对象等等。<br /><br />2.  DOM--The Document Object Model，描述了作用于网页内容的方法和接口。<br /><br />    DOM是HTML的一个应用程序接口，它也经历了三个版本的更新，其中以第一和第二个版本使用最为广泛，在第二个版本中，最重要的特性莫过于提供了事件响应的接口，处理CSS的接口，移动窗口的接口，并且能够控制代码树的结构等等。<br />    除了使用最多的DOM Core和DOM HTML标准接口外，其他的部分语言也拥有自己的DOM标准，如SVG、MathML、SMIL。<br /><br />3.  BOM--The Browser Object Model，描述了和浏览器交互的方法和接口。<br /><br />   
例如弹出新的浏览器窗口，移动、改变和关闭浏览器窗口，提供详细的网络浏览器信息（navigator
object），详细的页面信息（location object），详细的用户屏幕分辨率的信息（screen
object），对cookies的支持等等。BOM作为JavaScript的一部分并没有相关标准的支持，每一个浏览器都有自己的实现，虽然有一些非
事实的标准，但还是给开发者带来一定的麻烦。</font>
<img src ="http://www.blogjava.net/hszdz/aggbug/58413.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hszdz/" target="_blank">爪哇之家</a> 2006-07-16 13:25 <a href="http://www.blogjava.net/hszdz/articles/58413.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>