﻿<?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-zkjbeyond-随笔分类-javascript语言</title><link>http://www.blogjava.net/zkjbeyond/category/10156.html</link><description>原创专栏 开源学习</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 20:40:08 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 20:40:08 GMT</pubDate><ttl>60</ttl><item><title>ajax blog 搬家</title><link>http://www.blogjava.net/zkjbeyond/archive/2006/08/21/64760.html</link><dc:creator>原创专栏 开源学习</dc:creator><author>原创专栏 开源学习</author><pubDate>Mon, 21 Aug 2006 04:52:00 GMT</pubDate><guid>http://www.blogjava.net/zkjbeyond/archive/2006/08/21/64760.html</guid><wfw:comment>http://www.blogjava.net/zkjbeyond/comments/64760.html</wfw:comment><comments>http://www.blogjava.net/zkjbeyond/archive/2006/08/21/64760.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/zkjbeyond/comments/commentRss/64760.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zkjbeyond/services/trackbacks/64760.html</trackback:ping><description><![CDATA[BlogJava做为java的专业blog，偶在这老写javascript  ajax的东西，有些不合适。<br /><br />朋友给了个blog,专门放ajax的文章吧！以后这专门写关于java的东西吧。<br /><a href="http://zkj.wisekernel.net">http://zkj.wisekernel.net</a><br /><br />谢谢支持。<img src ="http://www.blogjava.net/zkjbeyond/aggbug/64760.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zkjbeyond/" target="_blank">原创专栏 开源学习</a> 2006-08-21 12:52 <a href="http://www.blogjava.net/zkjbeyond/archive/2006/08/21/64760.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>再说说prototype.js的事件注册</title><link>http://www.blogjava.net/zkjbeyond/archive/2006/06/12/52083.html</link><dc:creator>原创专栏 开源学习</dc:creator><author>原创专栏 开源学习</author><pubDate>Sun, 11 Jun 2006 18:12:00 GMT</pubDate><guid>http://www.blogjava.net/zkjbeyond/archive/2006/06/12/52083.html</guid><wfw:comment>http://www.blogjava.net/zkjbeyond/comments/52083.html</wfw:comment><comments>http://www.blogjava.net/zkjbeyond/archive/2006/06/12/52083.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/zkjbeyond/comments/commentRss/52083.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zkjbeyond/services/trackbacks/52083.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 框架实现人员必看<br>关于prototype.js中 bind函数的问题  和  拖拉层代码的建议<br><br>&nbsp;&nbsp;<a href='http://www.blogjava.net/zkjbeyond/archive/2006/06/12/52083.html'>阅读全文</a><img src ="http://www.blogjava.net/zkjbeyond/aggbug/52083.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zkjbeyond/" target="_blank">原创专栏 开源学习</a> 2006-06-12 02:12 <a href="http://www.blogjava.net/zkjbeyond/archive/2006/06/12/52083.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>闭包（续）</title><link>http://www.blogjava.net/zkjbeyond/archive/2006/05/23/47725.html</link><dc:creator>原创专栏 开源学习</dc:creator><author>原创专栏 开源学习</author><pubDate>Tue, 23 May 2006 15:51:00 GMT</pubDate><guid>http://www.blogjava.net/zkjbeyond/archive/2006/05/23/47725.html</guid><wfw:comment>http://www.blogjava.net/zkjbeyond/comments/47725.html</wfw:comment><comments>http://www.blogjava.net/zkjbeyond/archive/2006/05/23/47725.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/zkjbeyond/comments/commentRss/47725.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zkjbeyond/services/trackbacks/47725.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 书接上回，继续闭包。<br><br>如果你懂javascript，而你不了解javascript的闭包。<br>那你将错过javascript最强大特性之一（闭包）。&nbsp;&nbsp;<a href='http://www.blogjava.net/zkjbeyond/archive/2006/05/23/47725.html'>阅读全文</a><img src ="http://www.blogjava.net/zkjbeyond/aggbug/47725.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zkjbeyond/" target="_blank">原创专栏 开源学习</a> 2006-05-23 23:51 <a href="http://www.blogjava.net/zkjbeyond/archive/2006/05/23/47725.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript语言中的闭包</title><link>http://www.blogjava.net/zkjbeyond/archive/2006/05/19/47025.html</link><dc:creator>原创专栏 开源学习</dc:creator><author>原创专栏 开源学习</author><pubDate>Fri, 19 May 2006 03:46:00 GMT</pubDate><guid>http://www.blogjava.net/zkjbeyond/archive/2006/05/19/47025.html</guid><wfw:comment>http://www.blogjava.net/zkjbeyond/comments/47025.html</wfw:comment><comments>http://www.blogjava.net/zkjbeyond/archive/2006/05/19/47025.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/zkjbeyond/comments/commentRss/47025.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zkjbeyond/services/trackbacks/47025.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 2006.5.20下午16.21更新。<br><br>groove,python,perl这些高级脚本语言都有闭包概念。不懂这些语言的可能没机会理解闭包了。<br>幸运的是大家都熟悉javascript,那么从javascript开始闭包认识吧。<br>感觉闭包是高级的，但也是晦涩的。<br><br>本文译自<br>http://jibbering.com/faq/faq_notes/closures.html<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/zkjbeyond/archive/2006/05/19/47025.html'>阅读全文</a><img src ="http://www.blogjava.net/zkjbeyond/aggbug/47025.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zkjbeyond/" target="_blank">原创专栏 开源学习</a> 2006-05-19 11:46 <a href="http://www.blogjava.net/zkjbeyond/archive/2006/05/19/47025.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript进阶之对象篇(7)网页中的javascript对象</title><link>http://www.blogjava.net/zkjbeyond/archive/2006/04/23/42666.html</link><dc:creator>原创专栏 开源学习</dc:creator><author>原创专栏 开源学习</author><pubDate>Sun, 23 Apr 2006 07:36:00 GMT</pubDate><guid>http://www.blogjava.net/zkjbeyond/archive/2006/04/23/42666.html</guid><wfw:comment>http://www.blogjava.net/zkjbeyond/comments/42666.html</wfw:comment><comments>http://www.blogjava.net/zkjbeyond/archive/2006/04/23/42666.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zkjbeyond/comments/commentRss/42666.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zkjbeyond/services/trackbacks/42666.html</trackback:ping><description><![CDATA[
		<p>
				<strong>1、废话<br /></strong>   这部分将要描述浏览器为我们创建的对象。就是大家熟悉的window,document</p>
		<p>等。一般书上都叫对象层次和文档对象模型。用dom标准来说，一般浏览器都实现</p>
		<p>了0级DOM，关于DOM标准我感觉知道0级就可以了。对于DOM标准W3C早已定义了1级</p>
		<p>，2级，三级也在标准化，问题是各个浏览器不完全实现，尤其是IE的事件模型，</p>
		<p>完全不和DOM一致。（不过prototype.js已经做了很好的封装）<br />    我这里不会讲dom接口，更不会讲各个浏览器的如何实现这些接口及区别。（</p>
		<p>我也没这能力）。而是要猜测一下浏览器是怎么用javascript定义这些接口或类</p>
		<p>的。（注意是猜测，个人理解）</p>
		<p>
				<strong>2、引子</strong>
		</p>
		<p>
				<font style="BACKGROUND-COLOR: #808080">&lt;SCRIPT LANGUAGE="JavaScript"&gt;<br />&lt;!--<br />alert(document);<br />alert(typeof(document));<br />//alert(Document);//出错<br />function desc(obj){<br />  var ret='';<br />  for(var key in obj){<br />    ret+=key+':'+obj[key]+'&lt;/br&gt;';<br />  }<br />  return ret;<br />}<br />document.writeln(desc(document));<br />//--&gt;<br />&lt;/SCRIPT&gt;</font>
		</p>
		<p>以上简单的javascript代码，不知大家提出过疑问没有。<br />首先，document是个javascript对象，谁创建了它。；document的类是什么</p>
		<p>(function Document(){....} 可能是new Document()创建了它)；document有些</p>
		<p>什么属性或方法。这些对象与html关系是什么。这些对象与dom标准有什么关系。</p>
		<p>接下来将试着回答这些问题。我会侧重讲述我的理解思路，而不是具体哪个方法</p>
		<p>，接口。</p>
		<p>
				<strong>3、一个简单的例子的深入理解</strong>
		</p>
		<p>
				<font style="BACKGROUND-COLOR: #808080">&lt;SCRIPT LANGUAGE="JavaScript"&gt;<br />&lt;!--<br />    alert(document);//存在<br />    alert(this.document==window.document);//true<br />//--&gt;<br />&lt;/SCRIPT&gt;<br />&lt;HTML&gt;<br />&lt;HEAD&gt;<br />&lt;TITLE&gt; New Document &lt;/TITLE&gt;<br />&lt;SCRIPT LANGUAGE="JavaScript"&gt;<br />    alert(document.getElementById('xm'));//null<br />&lt;/SCRIPT&gt;<br />&lt;/HEAD&gt;<br />&lt;SCRIPT LANGUAGE="JavaScript"&gt;<br />    alert(document.getElementById('xm'));//null<br />&lt;/SCRIPT&gt;<br />&lt;BODY&gt;<br />&lt;SCRIPT LANGUAGE="JavaScript"&gt;<br />    alert(document.getElementById('xm'));//null<br />&lt;/SCRIPT&gt;<br />&lt;input type="text" id="xm"&gt;<br />&lt;SCRIPT LANGUAGE="JavaScript"&gt;<br />    alert(document.getElementById('xm'));//存在<br />&lt;/SCRIPT&gt;<br />&lt;/BODY&gt;<br />&lt;SCRIPT LANGUAGE="JavaScript"&gt;<br />    alert(document.getElementById('xm'));//存在<br />&lt;/SCRIPT&gt;<br />&lt;/HTML&gt;</font>
		</p>
		<p>上面代码说明几个问题：<br /><strong>a、</strong>window\this就是我在变量篇里面提到过的窗体的全局对象，document是它的</p>
		<p>一个属性，也叫全局属性。<br /><strong>b、</strong>window,document在html最前面已经存在了。我们可以随处使用document对象</p>
		<p>。<br /><strong>c、</strong>对于输入框按钮这类html标记的javascript对象只有在解释过以后才能访问到</p>
		<p>。当然我们编码用到这些对象时，都在body.onload或鼠标触发，一般不会出错。<br /><strong>d、</strong>例子中的document.getElementById('xm')javascript对象和我们自己创建的</p>
		<p>javascript对象有什么区别呢？从应用角度看没有区别，只是自己定义的对象由</p>
		<p>自己new来初始化，而document.getElementById('xm')有浏览器为我们初始化对</p>
		<p>象，我们直接用方法得到句柄就可以了（有多种方法）。<br /><strong>e、</strong>我们怎么知道这些对象的用法呢？查看w3c DOM参考吗？我认为不用。</p>
		<p>
				<strong>4、浏览器为我们创建的对象与我们自己定义的对象的区别。</strong>
		</p>
		<p>
				<font style="BACKGROUND-COLOR: #808080">&lt;input type="text" id="xm" value="aaa"&gt;<br />&lt;INPUT TYPE="button" value='click me' onclick="alert</font>
		</p>
		<p>
				<font style="BACKGROUND-COLOR: #808080">(document.getElementById('xm').value);<br />alert(document.getElementById('myxm').value);"&gt;<br />&lt;br&gt;<br />&lt;SCRIPT LANGUAGE="JavaScript"&gt;<br />&lt;!--<br />function desc(obj){<br />  var ret='';<br />  for(var key in obj){<br />    ret+=key+':'+obj[key]+'&lt;/br&gt;';<br />  }<br />  return ret;<br />}<br />function MyText(id,value){<br />    this.id=id;<br /> this.outHtml='&lt;input type=text id='+id+' value='+value+'&gt;';<br /> this.toString=function(){<br />        return this.outHtml;<br /> }<br /> //...<br /> //...<br /> //...<br />}<br />//document.writeln(desc(document.getElementById('xm')));<br />var myText=new MyText('myxm','zkj');<br />document.writeln(myText);<br />//--&gt;<br />&lt;/SCRIPT&gt;</font>
		</p>
		<p>希望你仔细的看看上面代码的执行结果。可能你会得到更震撼的想法来。暂时我</p>
		<p>有以下几个感想：<br /><strong>a、</strong>我们自己也可以写一个界面控件，如果把属性建立全的话，完全可以复原浏览</p>
		<p>器的内建类。<br /><strong>b、</strong>反过来，对于浏览器为我们创建的对象，我们可以当成自己的对象一样使用。</p>
		<p>看看prototype.js中，使用了内建对象的方法。</p>
		<p>
				<font style="BACKGROUND-COLOR: #808080">escapeHTML: function() {<br />    var div = document.createElement('div');<br />    var text = document.createTextNode(this);<br />    div.appendChild(text);<br />    return div.innerHTML;<br />  },<br />  unescapeHTML: function() {<br />    var div = document.createElement('div');<br />    div.innerHTML = this.stripTags();<br />    return div.childNodes[0] ? div.childNodes[0].nodeValue : '';<br />  },<br /></font>
				<strong>c、</strong>大家可以打开描述注释，看看&lt;input &gt;到底包含哪些属性和方法。注意</p>
		<p>outerHTML属性的值是什么,在网页上表示什么。可以看出javascript对象的</p>
		<p>outerHTML属性就是html(xhtml)规范中的标签。这样给了我们写javascriptUI控</p>
		<p>件的新思路，一个控件就是一个javascript对象（其实很多人都这样做了，但好</p>
		<p>象都是innerHtml等等）。可以象asp.net或jsf那样编写组合控件。<br />大家可以看一下ActiveWidgets代码（与我的思路有些差别），我认为这种基于</p>
		<p>html标签的UI控件无论性能、开发人员使用难度上都不错。 <br />对于dojo的widget这种做UI做法我个人不很赞同，完全用div，图片实现了一便</p>
		<p>html的UI标签。性能不好，开发人员上手不容易，美工更不能修改，另外图片都</p>
		<p>是定死的，界面也比较单调，也不好修改。</p>
		<p>对于自己实现javascript控件，我认为在htmlUI基础上就可以了，毕竟自己实现</p>
		<p>存在的UI难度不小。把html的标准UI组合成新的控件。例如，我们可以很容易的</p>
		<p>实现一个包括  （登陆 密码 验证码 确认）  的组合javascript控件</p>
		<p>
				<br />
				<strong>d、</strong>dom标准与浏览器对象<br />打开document.writeln(desc(document.getElementById('xm')));，你可以看到&lt; </p>
		<p>input type="text"&gt;的所有属性。这些属性 ”dom标准“，之所以加引号，DOM标</p>
		<p>准我们有很多误解，认为DOM标准是个什么高不可及、不可违抗的、复杂的东西。<br />首先：我们接触了静态HTML,xml，有了DOM对象模型（熟悉java的都知道java的实</p>
		<p>现），但javascript语言的特点使不能象java,c++那样来实现DOM对象模型。例如 </p>
		<p>input 继承了 HTMLElement，HTMLElement定义的一堆属性。按照dom标准,所有浏</p>
		<p>览器实现 input javascript对象时都必须把这些属性加上，这就叫符合标准。其</p>
		<p>实说白了：DOM标准就是浏览器为我们实现的javascript代码的总和。（可以浏览</p>
		<p>器厂商不完全实现）<br />看protorype.js的代码<br />为了支持多了浏览器，定义下面代码。说明有的浏览器网页全局变量里有Element</p>
		<p>，Event，有些浏览器没给我们定义。所以只能这样了。</p>
		<p>
				<font style="BACKGROUND-COLOR: #808080">if (!window.Element) {<br />  var Element = new Object();<br />}<br />if (!window.Event) {<br />  var Event = new Object();<br />}</font>
		</p>
		<p>还有用AJAX技术时<br />'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'， 其实很简</p>
		<p>单，就是浏览器中有没有这些javascript实现了。所有大家在DWR框架中用iframe</p>
		<p>实现了一个javascript  XMLHTTP类。</p>
		<p>
				<strong>e、</strong>与xhtml标准的矛盾<br />在xhtml中，&lt;input type="button"&gt; 双引号是必须的，但outerHTML属性中却没</p>
		<p>双引号。还没想明白。</p>
		<p>
				<strong>5、浏览器为我们创建了几类对象</strong>
				<br />a、全局对象window或this。其实javascript的全局变量、全局方法（如</p>
		<p>Math,setTimeout()）都可以由window对象访问。另外浏览器的特殊函数或属性。</p>
		<p>（如window.status,window.alert()）<br />b、document对象。包括图片，applet,form等属性，可能我们用的最多。也是访</p>
		<p>问我们可见的元素的入口（document.getElementById）,也提供了动态创建html</p>
		<p>标签的方法。如var t=new Text("test");没有这样方法，只能 var </p>
		<p>t=document.creatTextNode("test");都由document提供的工厂方法来创建。<br />c、页面中的html标签，当解释执行过，浏览器会为你初始化对象，放到document</p>
		<p>对象中去。</p>
		<p>
				<strong>6、对DOM标准的认识</strong>
				<br />DOM标准定义了接口，没有定义类。浏览器为我们实现了这些接口，实现这些接口</p>
		<p>的类我们也看不见。所以这里接口的含义和java中接口的含义不同。<br />例如我们常用的document对象<br />DOM标准中定义了个Document接口，实现HTMLElemnt接口。<br />Document接口和HTMLElemnt接口在DOM标准中定义了很多属性和方法。<br />注意我们使用的document对象是浏览器为我们创建的javascript对象，到底</p>
		<p>document对象有哪些属性和方法是有浏览器决定的，而不是由DOM标准决定的。<br />在这里javascript世界里没有继承概念，所以DOM标准定义的接口，对于我们开发</p>
		<p>人员来说只能当成一个参考手册，象javadoc。</p>
		<p>
				<strong>7、如何写出跨浏览器的javascript代码</strong>
				<br />   这难度大了点.但说穿了，只要我们用javascript代码把浏览器没符合DOM标准</p>
		<p>的代码补全就好了。但DOM标准之大不是一般人能全部搞清楚的，浏览器厂商也使</p>
		<p>坏，让这个工作更难了。   现在好象有个误区，人们写javascript都喜欢按照</p>
		<p>DOM标准来写。如果我们按照各个浏览器实现DOM标准的交集写代码的话，可能会</p>
		<p>更好点。</p>
		<p> </p>
		<p>
				<br /> </p>
<img src ="http://www.blogjava.net/zkjbeyond/aggbug/42666.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zkjbeyond/" target="_blank">原创专栏 开源学习</a> 2006-04-23 15:36 <a href="http://www.blogjava.net/zkjbeyond/archive/2006/04/23/42666.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript进阶之对象篇(5)继承</title><link>http://www.blogjava.net/zkjbeyond/archive/2006/04/17/41532.html</link><dc:creator>原创专栏 开源学习</dc:creator><author>原创专栏 开源学习</author><pubDate>Mon, 17 Apr 2006 15:19:00 GMT</pubDate><guid>http://www.blogjava.net/zkjbeyond/archive/2006/04/17/41532.html</guid><wfw:comment>http://www.blogjava.net/zkjbeyond/comments/41532.html</wfw:comment><comments>http://www.blogjava.net/zkjbeyond/archive/2006/04/17/41532.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zkjbeyond/comments/commentRss/41532.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zkjbeyond/services/trackbacks/41532.html</trackback:ping><description><![CDATA[
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">SCRIPT LANGUAGE </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">JavaScript</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #000000">&lt;!--</span>
				<span style="COLOR: #000000"> <br /><img id="Codehighlighter1_93_207_Open_Image" onclick="this.style.display='none'; Codehighlighter1_93_207_Open_Text.style.display='none'; Codehighlighter1_93_207_Closed_Image.style.display='inline'; Codehighlighter1_93_207_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_93_207_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_93_207_Closed_Text.style.display='none'; Codehighlighter1_93_207_Open_Image.style.display='inline'; Codehighlighter1_93_207_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /> Object.extend  </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">   function (destination, source)   </span>
				<span id="Codehighlighter1_93_207_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_93_207_Open_Text">
						<span style="COLOR: #000000">{<br /><img id="Codehighlighter1_128_180_Open_Image" onclick="this.style.display='none'; Codehighlighter1_128_180_Open_Text.style.display='none'; Codehighlighter1_128_180_Closed_Image.style.display='inline'; Codehighlighter1_128_180_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_128_180_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_128_180_Closed_Text.style.display='none'; Codehighlighter1_128_180_Open_Image.style.display='inline'; Codehighlighter1_128_180_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />   </span>
						<span style="COLOR: #0000ff">for</span>
						<span style="COLOR: #000000">  (property  in  source)   </span>
						<span id="Codehighlighter1_128_180_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_128_180_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    destination[property]  </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000">  source[property];<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />  }</span>
						</span>
						<span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />   </span>
						<span style="COLOR: #0000ff">return</span>
						<span style="COLOR: #000000">  destination;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /><img id="Codehighlighter1_231_258_Open_Image" onclick="this.style.display='none'; Codehighlighter1_231_258_Open_Text.style.display='none'; Codehighlighter1_231_258_Closed_Image.style.display='inline'; Codehighlighter1_231_258_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_231_258_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_231_258_Closed_Text.style.display='none'; Codehighlighter1_231_258_Open_Image.style.display='inline'; Codehighlighter1_231_258_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />  function  Man()  </span>
				<span id="Codehighlighter1_231_258_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_231_258_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     </span>
						<span style="COLOR: #0000ff">this</span>
						<span style="COLOR: #000000"> .name </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000">zkj</span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Man.prototype.type </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">'</span>
				<span style="COLOR: #000000">男人</span>
				<span style="COLOR: #000000">'</span>
				<span style="COLOR: #000000">;<br /><img id="Codehighlighter1_325_353_Open_Image" onclick="this.style.display='none'; Codehighlighter1_325_353_Open_Text.style.display='none'; Codehighlighter1_325_353_Closed_Image.style.display='inline'; Codehighlighter1_325_353_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_325_353_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_325_353_Closed_Text.style.display='none'; Codehighlighter1_325_353_Open_Image.style.display='inline'; Codehighlighter1_325_353_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />Man.prototype.getType </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> function ()  </span>
				<span id="Codehighlighter1_325_353_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_325_353_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     </span>
						<span style="COLOR: #0000ff">return</span>
						<span style="COLOR: #000000">   </span>
						<span style="COLOR: #0000ff">this</span>
						<span style="COLOR: #000000"> .type;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000"> <br /><img id="Codehighlighter1_377_378_Open_Image" onclick="this.style.display='none'; Codehighlighter1_377_378_Open_Text.style.display='none'; Codehighlighter1_377_378_Closed_Image.style.display='inline'; Codehighlighter1_377_378_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_377_378_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_377_378_Closed_Text.style.display='none'; Codehighlighter1_377_378_Open_Image.style.display='inline'; Codehighlighter1_377_378_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />  function  Woman()  </span>
				<span id="Codehighlighter1_377_378_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_377_378_Open_Text">
						<span style="COLOR: #000000">{}</span>
				</span>
				<span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Object.extend(Woman.prototype,Man.prototype);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> var  man </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000">  Man();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> var  woman </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000">  Woman();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />alert(man.getType());<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />alert(man.name);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />alert(woman.getType());<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />alert(woman.name);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000"> --&gt; </span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">SCRIPT</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> </span>
		</div>我只能说javascript的继承是模拟实现的。和java,c++中是不同的。是依靠prototype实现的。<br />我个人从来不用javascript的“继承”，始终认为javascript实现的继承不是真正的继承。可能是受java”毒害“够深。<br />在javascript中，我把继承分为两类： 类继承，对象继承。<br /><strong>（1）、prototype.js中的继承</strong><br />prototype.js中用如下代码实现继承。我认为只是个属性拷贝过程。<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Codehighlighter1_52_166_Open_Image" onclick="this.style.display='none'; Codehighlighter1_52_166_Open_Text.style.display='none'; Codehighlighter1_52_166_Closed_Image.style.display='inline'; Codehighlighter1_52_166_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_52_166_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_52_166_Closed_Text.style.display='none'; Codehighlighter1_52_166_Open_Image.style.display='inline'; Codehighlighter1_52_166_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #000000">Object.extend  </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">   function (destination, source)   </span><span id="Codehighlighter1_52_166_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_52_166_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_87_139_Open_Image" onclick="this.style.display='none'; Codehighlighter1_87_139_Open_Text.style.display='none'; Codehighlighter1_87_139_Closed_Image.style.display='inline'; Codehighlighter1_87_139_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_87_139_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_87_139_Closed_Text.style.display='none'; Codehighlighter1_87_139_Open_Image.style.display='inline'; Codehighlighter1_87_139_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />   </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">  (property  in  source)   </span><span id="Codehighlighter1_87_139_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_87_139_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    destination[property]  </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">  source[property];<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />  }</span></span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />   </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">  destination;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"> </span></div><br />//Object.prototype.extend 感觉这句话没必要，太模仿java了，想让对象实例直接继承。<br />    <strong>a、prototype.js中的类继承<br /></strong><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">prototype.js  </span><span style="COLOR: #000000">1.3</span><span style="COLOR: #000000"> . </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000"> <br /><img id="Codehighlighter1_54_552_Open_Image" onclick="this.style.display='none'; Codehighlighter1_54_552_Open_Text.style.display='none'; Codehighlighter1_54_552_Closed_Image.style.display='inline'; Codehighlighter1_54_552_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_54_552_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_54_552_Closed_Text.style.display='none'; Codehighlighter1_54_552_Open_Image.style.display='inline'; Codehighlighter1_54_552_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />     String.prototype.extend(  </span><span id="Codehighlighter1_54_552_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_54_552_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_88_154_Open_Image" onclick="this.style.display='none'; Codehighlighter1_88_154_Open_Text.style.display='none'; Codehighlighter1_88_154_Closed_Image.style.display='inline'; Codehighlighter1_88_154_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_88_154_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_88_154_Closed_Text.style.display='none'; Codehighlighter1_88_154_Open_Image.style.display='inline'; Codehighlighter1_88_154_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />      stripTags:  function ()   </span><span id="Codehighlighter1_88_154_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_88_154_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />       </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">   </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000"> .replace( </span><span style="COLOR: #000000">/&lt;</span><span style="COLOR: #000000"> \ </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">+&gt;/</span><span style="COLOR: #000000"> gi, </span><span style="COLOR: #000000">''</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"> ,<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_190_360_Open_Image" onclick="this.style.display='none'; Codehighlighter1_190_360_Open_Text.style.display='none'; Codehighlighter1_190_360_Closed_Image.style.display='inline'; Codehighlighter1_190_360_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_190_360_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_190_360_Closed_Text.style.display='none'; Codehighlighter1_190_360_Open_Image.style.display='inline'; Codehighlighter1_190_360_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    escapeHTML:  function ()   </span><span id="Codehighlighter1_190_360_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_190_360_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />       var  div  </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">  document.createElement(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">div</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />       var  text  </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">  document.createTextNode( </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000"> );<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />      div.appendChild(text);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />       </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">  div.innerHTML;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"> ,<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_398_545_Open_Image" onclick="this.style.display='none'; Codehighlighter1_398_545_Open_Text.style.display='none'; Codehighlighter1_398_545_Closed_Image.style.display='inline'; Codehighlighter1_398_545_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_398_545_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_398_545_Closed_Text.style.display='none'; Codehighlighter1_398_545_Open_Image.style.display='inline'; Codehighlighter1_398_545_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    unescapeHTML:  function ()   </span><span id="Codehighlighter1_398_545_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_398_545_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />       var  div  </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">  document.createElement(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">div</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />      div.innerHTML  </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">   </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000"> .stripTags();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />       </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">  div.childNodes[ </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000"> ].nodeValue;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"> );</span></div><p>    我把这类型的继承叫做类继承，直接把你自己写的对象属性拷贝到原型对象中去。</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">SCRIPT LANGUAGE </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">JavaScript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;!--</span><span style="COLOR: #000000"> <br /><img id="Codehighlighter1_93_207_Open_Image" onclick="this.style.display='none'; Codehighlighter1_93_207_Open_Text.style.display='none'; Codehighlighter1_93_207_Closed_Image.style.display='inline'; Codehighlighter1_93_207_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_93_207_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_93_207_Closed_Text.style.display='none'; Codehighlighter1_93_207_Open_Image.style.display='inline'; Codehighlighter1_93_207_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /> Object.extend  </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">   function (destination, source)   </span><span id="Codehighlighter1_93_207_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_93_207_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_128_180_Open_Image" onclick="this.style.display='none'; Codehighlighter1_128_180_Open_Text.style.display='none'; Codehighlighter1_128_180_Closed_Image.style.display='inline'; Codehighlighter1_128_180_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_128_180_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_128_180_Closed_Text.style.display='none'; Codehighlighter1_128_180_Open_Image.style.display='inline'; Codehighlighter1_128_180_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />   </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">  (property  in  source)   </span><span id="Codehighlighter1_128_180_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_128_180_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    destination[property]  </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">  source[property];<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />  }</span></span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />   </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">  destination;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /><img id="Codehighlighter1_231_258_Open_Image" onclick="this.style.display='none'; Codehighlighter1_231_258_Open_Text.style.display='none'; Codehighlighter1_231_258_Closed_Image.style.display='inline'; Codehighlighter1_231_258_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_231_258_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_231_258_Closed_Text.style.display='none'; Codehighlighter1_231_258_Open_Image.style.display='inline'; Codehighlighter1_231_258_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />  function  Man()  </span><span id="Codehighlighter1_231_258_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_231_258_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000"> .name </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">zkj</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Man.prototype.type </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">男人</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br /><img id="Codehighlighter1_325_353_Open_Image" onclick="this.style.display='none'; Codehighlighter1_325_353_Open_Text.style.display='none'; Codehighlighter1_325_353_Closed_Image.style.display='inline'; Codehighlighter1_325_353_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_325_353_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_325_353_Closed_Text.style.display='none'; Codehighlighter1_325_353_Open_Image.style.display='inline'; Codehighlighter1_325_353_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />Man.prototype.getType </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> function ()  </span><span id="Codehighlighter1_325_353_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_325_353_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">   </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000"> .type;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"> <br /><img id="Codehighlighter1_377_378_Open_Image" onclick="this.style.display='none'; Codehighlighter1_377_378_Open_Text.style.display='none'; Codehighlighter1_377_378_Closed_Image.style.display='inline'; Codehighlighter1_377_378_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_377_378_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_377_378_Closed_Text.style.display='none'; Codehighlighter1_377_378_Open_Image.style.display='inline'; Codehighlighter1_377_378_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />  function  Woman()  </span><span id="Codehighlighter1_377_378_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_377_378_Open_Text"><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Object.extend(Woman.prototype,Man.prototype);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> var  man </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">  Man();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> var  woman </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">  Woman();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />alert(man.getType());<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />alert(man.name);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />alert(woman.getType());<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />alert(woman.name);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> --&gt; </span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">SCRIPT</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> </span></div><p>看了以上代码，可能你会明白。直接拷贝类的原型对象确实可以实现某种概念上的继承。<br />但要注意：在继承体系中，Man的原型对象属性方法最好不要用Man的实例属性（name），因为可能Woman中并没有定义实例属性name;也最好不要用Man)原型对象属性字段（type）,虽然type也被拷贝过来了，但值还是”男人“。<br />虽然有解决办法，但javascript没有很好的语法检查工具，你用prototype.js的类继承时小心处理。</p><p><strong>b、prototype.js中的对象继承<br /></strong><br /></p><p>prototype.js 1.3.1<br />this.options = {<br />      method:       'post',<br />      asynchronous: true,<br />      parameters:   ''<br />    }.extend(options || {});</p><p>这个应用比较简单，典型的对象之间属性拷贝覆盖。<br />总结：关于prototype.js中继承的实现，我们当成javascript对象的属性拷贝可能在应用中更好理解。建议大家仔细读读prototype.js代码可能体会更深。模仿prototype.js中extend的应用。感觉var Insertion = new Object(); 的实现比较经典。</p><p><strong>（2）、dojo-0.2.0-ajax中的继承</strong></p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Codehighlighter1_52_418_Open_Image" onclick="this.style.display='none'; Codehighlighter1_52_418_Open_Text.style.display='none'; Codehighlighter1_52_418_Closed_Image.style.display='inline'; Codehighlighter1_52_418_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_52_418_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_52_418_Closed_Text.style.display='none'; Codehighlighter1_52_418_Open_Image.style.display='inline'; Codehighlighter1_52_418_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #000000">dojo.inherits  </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">   function (subclass, superclass)  </span><span id="Codehighlighter1_52_418_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_52_418_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_100_165_Open_Image" onclick="this.style.display='none'; Codehighlighter1_100_165_Open_Text.style.display='none'; Codehighlighter1_100_165_Closed_Image.style.display='inline'; Codehighlighter1_100_165_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_100_165_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_100_165_Closed_Text.style.display='none'; Codehighlighter1_100_165_Open_Image.style.display='inline'; Codehighlighter1_100_165_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> ( typeof  superclass  </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">  </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000"> function </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)  </span><span id="Codehighlighter1_100_165_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_100_165_Open_Text"><span style="COLOR: #000000">{ <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  dojo.raise( </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> superclass:  </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> superclass </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">  borken </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> );<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /> }</span></span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> subclass.prototype  </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">   </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">  superclass();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> subclass.prototype.constructor  </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">  subclass;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> subclass.superclass  </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">  superclass.prototype;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">  DEPRICATED: super is a reserved word, use 'superclass' </span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">  subclass[</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">super</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">]  </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">  superclass.prototype;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />     }</span></span><span style="COLOR: #000000"> </span></div><p>dojo的继承实现比较正统，也是《javascript权威指南》中的实现方法。注意最后一句代码可以实现子类访问父类原型对象的方法。<br /><br /></p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">SCRIPT LANGUAGE </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">JavaScript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span><span style="COLOR: #000000">&lt;!--</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /><img id="Codehighlighter1_62_89_Open_Image" onclick="this.style.display='none'; Codehighlighter1_62_89_Open_Text.style.display='none'; Codehighlighter1_62_89_Closed_Image.style.display='inline'; Codehighlighter1_62_89_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_62_89_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_62_89_Closed_Text.style.display='none'; Codehighlighter1_62_89_Open_Image.style.display='inline'; Codehighlighter1_62_89_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />  function  Man()  </span><span id="Codehighlighter1_62_89_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_62_89_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000"> .name </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">zkj</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Man.prototype.type </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">男人</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br /><img id="Codehighlighter1_156_184_Open_Image" onclick="this.style.display='none'; Codehighlighter1_156_184_Open_Text.style.display='none'; Codehighlighter1_156_184_Closed_Image.style.display='inline'; Codehighlighter1_156_184_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_156_184_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_156_184_Closed_Text.style.display='none'; Codehighlighter1_156_184_Open_Image.style.display='inline'; Codehighlighter1_156_184_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />Man.prototype.getType </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> function ()  </span><span id="Codehighlighter1_156_184_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_156_184_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">   </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000"> .type;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"> <br /><img id="Codehighlighter1_208_209_Open_Image" onclick="this.style.display='none'; Codehighlighter1_208_209_Open_Text.style.display='none'; Codehighlighter1_208_209_Closed_Image.style.display='inline'; Codehighlighter1_208_209_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_208_209_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_208_209_Closed_Text.style.display='none'; Codehighlighter1_208_209_Open_Image.style.display='inline'; Codehighlighter1_208_209_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />  function  Woman()  </span><span id="Codehighlighter1_208_209_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_208_209_Open_Text"><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Woman.prototype  </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">   </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">  Man();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Woman.prototype.constructor  </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">  Woman;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Woman.superclass  </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">  Man.prototype;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">  DEPRICATED: super is a reserved word, use 'superclass' </span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000"> Woman[</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">super</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">]  </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">  Man.prototype;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Woman.prototype.type </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">女人</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> var  man </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">  Man();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> var  woman </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">  Woman();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />alert(man.getType());<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />alert(man.name);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />alert(woman.getType());<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />alert(Woman.superclass.getType());<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />alert(woman.name);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> --&gt; </span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">SCRIPT</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> </span></div><p>看看代码，感觉混乱。<br />dojo一直没时间仔细读读代码。这部分详细讨论待续。<br /><strong>(3)、总结</strong><br />关于javascript的继承实现，建议一般不要使用，感觉很乱，代码可读性较差。一般也没有使用必要。详细在《9、javascript对象使用指南》中讨论。<br /></p><img src ="http://www.blogjava.net/zkjbeyond/aggbug/41532.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zkjbeyond/" target="_blank">原创专栏 开源学习</a> 2006-04-17 23:19 <a href="http://www.blogjava.net/zkjbeyond/archive/2006/04/17/41532.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript进阶之对象篇(4)构造函数、原型对象 </title><link>http://www.blogjava.net/zkjbeyond/archive/2006/04/17/41531.html</link><dc:creator>原创专栏 开源学习</dc:creator><author>原创专栏 开源学习</author><pubDate>Mon, 17 Apr 2006 15:12:00 GMT</pubDate><guid>http://www.blogjava.net/zkjbeyond/archive/2006/04/17/41531.html</guid><wfw:comment>http://www.blogjava.net/zkjbeyond/comments/41531.html</wfw:comment><comments>http://www.blogjava.net/zkjbeyond/archive/2006/04/17/41531.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/zkjbeyond/comments/commentRss/41531.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zkjbeyond/services/trackbacks/41531.html</trackback:ping><description><![CDATA[原型对象prototype是Object或与之同等级的对象如（function，Number)的一个属性，protorype是个对象。typeof的值是object。
<p>如果看了上一小节的最后一个例子，对自定义的“类”应该比较熟悉了。<br />在javascript中，可以说没有方法，因为函数和字符串一样也是种数据类型，但类中的函数可以用this关键字。下面我说的类的属性可以是方法，也可以指字段。<br />在一个自定义“类”中有中有几个地方可以定义属性。<br />  <strong> a、</strong>函数名中直接定义。  如Person.name。在这定义相当于类名的属性。静态的，访问的时候必须用Person.name来访问，不能用new Person().name访问，也访问不到。<br /> <strong>  b、</strong>构造函数的this.中。当你用new function()时，这些属性就是你所持对象的属性。用new Person().属性  来访问。<br /> <strong>  c、</strong>构建好对象以后，给对象增加属性。和构造函数中的属性使用类似。<br /> <strong>  d、</strong>函数名的prototype中<br />   <strong>e、</strong>父类或Object 的prototype中。</p><p><strong>(1)对象属性优先级</strong><br />通过运行以下代码，我们访问对象属性优先级如下：c&gt;b&gt;d&gt;e<br />c种属性必须在定义以后访问才有效。a种属性实例访问不到。<br />javascrpt语言预定义的属性不能用for in 得到。如toString<br /><br /></p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">SCRIPT LANGUAGE </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">JavaScript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;!--</span><span style="COLOR: #000000"> <br /><img id="Codehighlighter1_82_83_Open_Image" onclick="this.style.display='none'; Codehighlighter1_82_83_Open_Text.style.display='none'; Codehighlighter1_82_83_Closed_Image.style.display='inline'; Codehighlighter1_82_83_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_82_83_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_82_83_Closed_Text.style.display='none'; Codehighlighter1_82_83_Open_Image.style.display='inline'; Codehighlighter1_82_83_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /> Object.prototype.toString </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> function ()  </span><span id="Codehighlighter1_82_83_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_82_83_Open_Text"><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000"> ;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Object.prototype.name </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> Object </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> ;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Object.prototype.porotype_name </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> oObject </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> ;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Object.prototype.parent_name </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> pObject </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> ;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Person.prototype.name </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> Person </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> ;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Person.prototype.porotype_name </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> oPerson </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> ;<br /><img id="Codehighlighter1_322_354_Open_Image" onclick="this.style.display='none'; Codehighlighter1_322_354_Open_Text.style.display='none'; Codehighlighter1_322_354_Closed_Image.style.display='inline'; Codehighlighter1_322_354_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_322_354_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_322_354_Closed_Text.style.display='none'; Codehighlighter1_322_354_Open_Image.style.display='inline'; Codehighlighter1_322_354_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /> function  Person()  </span><span id="Codehighlighter1_322_354_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_322_354_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000"> .name </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">Person实例</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> var  o </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">  Person();<br /><img id="Codehighlighter1_407_440_Open_Image" onclick="this.style.display='none'; Codehighlighter1_407_440_Open_Text.style.display='none'; Codehighlighter1_407_440_Closed_Image.style.display='inline'; Codehighlighter1_407_440_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_407_440_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_407_440_Closed_Text.style.display='none'; Codehighlighter1_407_440_Open_Image.style.display='inline'; Codehighlighter1_407_440_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /> </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> ( var  key  in  o)  </span><span id="Codehighlighter1_407_440_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_407_440_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    alert(key </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> o[key]);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> --&gt; </span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000"> SCRIPT </span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> </span></div><p><strong>(2)prototype属性是只读的</strong><br />看如下代码，你不要试图通过变量改变原型对象的属性。你也不可能改变，你只会通过c模式给对象增加一个属性。<br />另外原型对象是所有实例共享的。理论上也不可以改变。</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">SCRIPT LANGUAGE </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">JavaScript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;!--</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Person.prototype.name </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> Person </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> ;<br /><img id="Codehighlighter1_97_102_Open_Image" onclick="this.style.display='none'; Codehighlighter1_97_102_Open_Text.style.display='none'; Codehighlighter1_97_102_Closed_Image.style.display='inline'; Codehighlighter1_97_102_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_97_102_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_97_102_Closed_Text.style.display='none'; Codehighlighter1_97_102_Open_Image.style.display='inline'; Codehighlighter1_97_102_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /> function  Person()  </span><span id="Codehighlighter1_97_102_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_97_102_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> var  o </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">  Person();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> var  o1 </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">  Person();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />alert(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">o.name:</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> o.name </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">  </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">o1.name:</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> o1.name);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />o.name </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">zkj</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />alert(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">o.name:</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> o.name </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">  </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">o1.name:</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> o1.name);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> --&gt; </span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">SCRIPT</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> </span></div><img src ="http://www.blogjava.net/zkjbeyond/aggbug/41531.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zkjbeyond/" target="_blank">原创专栏 开源学习</a> 2006-04-17 23:12 <a href="http://www.blogjava.net/zkjbeyond/archive/2006/04/17/41531.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript进阶之对象篇(3)函数与自定义”类“</title><link>http://www.blogjava.net/zkjbeyond/archive/2006/04/17/41530.html</link><dc:creator>原创专栏 开源学习</dc:creator><author>原创专栏 开源学习</author><pubDate>Mon, 17 Apr 2006 15:07:00 GMT</pubDate><guid>http://www.blogjava.net/zkjbeyond/archive/2006/04/17/41530.html</guid><wfw:comment>http://www.blogjava.net/zkjbeyond/comments/41530.html</wfw:comment><comments>http://www.blogjava.net/zkjbeyond/archive/2006/04/17/41530.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zkjbeyond/comments/commentRss/41530.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zkjbeyond/services/trackbacks/41530.html</trackback:ping><description><![CDATA[开始之前我先明确个问题。如下代码<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">SCRIPT LANGUAGE </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">JavaScript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;!--</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Person.type </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> person </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> ;<br /><img id="Codehighlighter1_99_136_Open_Image" onclick="this.style.display='none'; Codehighlighter1_99_136_Open_Text.style.display='none'; Codehighlighter1_99_136_Closed_Image.style.display='inline'; Codehighlighter1_99_136_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_99_136_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_99_136_Closed_Text.style.display='none'; Codehighlighter1_99_136_Open_Image.style.display='inline'; Codehighlighter1_99_136_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />Person.writeType </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> function ()  </span><span id="Codehighlighter1_99_136_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_99_136_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    document.writeln( </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000"> .type);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> var Person = function(){}</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">如果这样定义会报错,可以看看前面文章，函数的预编译。 </span><span style="COLOR: #008000"><br /><img id="Codehighlighter1_220_221_Open_Image" onclick="this.style.display='none'; Codehighlighter1_220_221_Open_Text.style.display='none'; Codehighlighter1_220_221_Closed_Image.style.display='inline'; Codehighlighter1_220_221_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_220_221_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_220_221_Closed_Text.style.display='none'; Codehighlighter1_220_221_Open_Image.style.display='inline'; Codehighlighter1_220_221_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="COLOR: #000000">  function  Person()  </span><span id="Codehighlighter1_220_221_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_220_221_Open_Text"><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Person.writeType();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />alert( typeof (Person));<br /><img id="Codehighlighter1_299_317_Open_Image" onclick="this.style.display='none'; Codehighlighter1_299_317_Open_Text.style.display='none'; Codehighlighter1_299_317_Closed_Image.style.display='inline'; Codehighlighter1_299_317_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_299_317_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_299_317_Closed_Text.style.display='none'; Codehighlighter1_299_317_Open_Image.style.display='inline'; Codehighlighter1_299_317_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /> </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> ( var  key  in  Person)  </span><span id="Codehighlighter1_299_317_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_299_317_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    alert(key);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> var  person </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">  Person();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> --&gt; </span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">SCRIPT</span><span style="COLOR: #000000">&gt;</span></div>在这里Person是个函数，但我们还可以定义它的属性（type）。而Person有Object实例的特性(for in、可以定义属性)，但Person不是Object的实例。<br /><br />见如下代码：<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">SCRIPT LANGUAGE </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">JavaScript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;!--</span><span style="COLOR: #000000"> <br /><img id="Codehighlighter1_81_103_Open_Image" onclick="this.style.display='none'; Codehighlighter1_81_103_Open_Text.style.display='none'; Codehighlighter1_81_103_Closed_Image.style.display='inline'; Codehighlighter1_81_103_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_81_103_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_81_103_Closed_Text.style.display='none'; Codehighlighter1_81_103_Open_Image.style.display='inline'; Codehighlighter1_81_103_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />Object.prototype.toString </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> function ()  </span><span id="Codehighlighter1_81_103_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_81_103_Open_Text"><span style="COLOR: #000000">{ </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">  </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">myToString</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000"> ;<br /><img id="Codehighlighter1_128_131_Open_Image" onclick="this.style.display='none'; Codehighlighter1_128_131_Open_Text.style.display='none'; Codehighlighter1_128_131_Closed_Image.style.display='inline'; Codehighlighter1_128_131_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_128_131_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_128_131_Closed_Text.style.display='none'; Codehighlighter1_128_131_Open_Image.style.display='inline'; Codehighlighter1_128_131_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /> function  Person()  </span><span id="Codehighlighter1_128_131_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_128_131_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"> <br /><img id="Codehighlighter1_176_194_Open_Image" onclick="this.style.display='none'; Codehighlighter1_176_194_Open_Text.style.display='none'; Codehighlighter1_176_194_Closed_Image.style.display='inline'; Codehighlighter1_176_194_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_176_194_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_176_194_Closed_Text.style.display='none'; Codehighlighter1_176_194_Open_Image.style.display='inline'; Codehighlighter1_176_194_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /> Person.prototype.toString </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> function ()  </span><span id="Codehighlighter1_176_194_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_176_194_Open_Text"><span style="COLOR: #000000">{ </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">  </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">Person</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000"> ;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> var  o </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">  Person();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />alert(o);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />alert(Person)<br /><img id="Codehighlighter1_279_306_Open_Image" onclick="this.style.display='none'; Codehighlighter1_279_306_Open_Text.style.display='none'; Codehighlighter1_279_306_Closed_Image.style.display='inline'; Codehighlighter1_279_306_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_279_306_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_279_306_Closed_Text.style.display='none'; Codehighlighter1_279_306_Open_Image.style.display='inline'; Codehighlighter1_279_306_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />Person.toString </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> function ()  </span><span id="Codehighlighter1_279_306_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_279_306_Open_Text"><span style="COLOR: #000000">{ </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">  </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">Person toString</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000"> ;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />alert(Person)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> --&gt; </span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">SCRIPT</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span></div><p>我理解function返回的数据类型是和Object同等级的数据类型。它有Object实例（new Object()）的一些特性,但它不是Object的实例，因为它没有继承Object.prototype.toString=function(){return 'myToString'};但我们Person.toString=function(){return 'Person toString'};改变了覆盖了方法。<br />在《javascript权威指南》中，作者用这个特性实现了“类方法、类变量”static方法，与java中不同，这些方法不能用new Person()来调用。</p><p><strong>Object                   function             同等级 function可以定义属性，可以(for in)</strong></p><p><strong>new Object()        new function()    同等级 new function()继承了Object的prototype,                                                      也会继承 function的prototype<br /></strong></p><p>小例子。看了原型对象就很清楚了啊。 原型对象最好在代码最前面定义，很容易被覆盖啊！<br /><br /></p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">SCRIPT LANGUAGE </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">JavaScript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;!--</span><span style="COLOR: #000000"> <br /><img id="Codehighlighter1_70_231_Open_Image" onclick="this.style.display='none'; Codehighlighter1_70_231_Open_Text.style.display='none'; Codehighlighter1_70_231_Closed_Image.style.display='inline'; Codehighlighter1_70_231_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_70_231_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_70_231_Closed_Text.style.display='none'; Codehighlighter1_70_231_Open_Image.style.display='inline'; Codehighlighter1_70_231_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />  </span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">  Person </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">  ()  </span><span id="Codehighlighter1_70_231_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_70_231_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000"> .name </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> 'Person的构造函数中属性name';<br /><img id="Codehighlighter1_146_180_Open_Image" onclick="this.style.display='none'; Codehighlighter1_146_180_Open_Text.style.display='none'; Codehighlighter1_146_180_Closed_Image.style.display='inline'; Codehighlighter1_146_180_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_146_180_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_146_180_Closed_Text.style.display='none'; Codehighlighter1_146_180_Open_Image.style.display='inline'; Codehighlighter1_146_180_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />     </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000"> .getName </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000"> ()  </span><span id="Codehighlighter1_146_180_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_146_180_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />          </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">   </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000"> .name;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /> }</span></span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> this.toString=function(){}  //你把注释去掉看看效果 </span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /></span><span style="COLOR: #000000"> }</span></span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Person.name </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> Person </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> ;<br /><img id="Codehighlighter1_292_322_Open_Image" onclick="this.style.display='none'; Codehighlighter1_292_322_Open_Text.style.display='none'; Codehighlighter1_292_322_Closed_Image.style.display='inline'; Codehighlighter1_292_322_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_292_322_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_292_322_Closed_Text.style.display='none'; Codehighlighter1_292_322_Open_Image.style.display='inline'; Codehighlighter1_292_322_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />Person.toString </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000"> ()  </span><span id="Codehighlighter1_292_322_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_292_322_Open_Text"><span style="COLOR: #000000">{ </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">   </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000"> .name </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> '的类方法'}</span></span><span style="COLOR: #000000"> ; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 我可以用this啊 </span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000"> alert(Person.toString()) </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 类方法 </span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">  o </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">  Person();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />alert(o.getName()); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 构造函数中的方法 </span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000"> alert(o); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 访问toString方法   先找  对象中 构造函数中   Person的prototype中       Object的prototype中 </span><span style="COLOR: #008000"><br /><img id="Codehighlighter1_563_601_Open_Image" onclick="this.style.display='none'; Codehighlighter1_563_601_Open_Text.style.display='none'; Codehighlighter1_563_601_Closed_Image.style.display='inline'; Codehighlighter1_563_601_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_563_601_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_563_601_Closed_Text.style.display='none'; Codehighlighter1_563_601_Open_Image.style.display='inline'; Codehighlighter1_563_601_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="COLOR: #000000">  Object.prototype.toString </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000"> ()  </span><span id="Codehighlighter1_563_601_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_563_601_Open_Text"><span style="COLOR: #000000">{ </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">  'Object的prototype中的toString'}</span></span><span style="COLOR: #000000"> ;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />alert(o); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Object的prototype中 </span><span style="COLOR: #008000"><br /><img id="Codehighlighter1_680_717_Open_Image" onclick="this.style.display='none'; Codehighlighter1_680_717_Open_Text.style.display='none'; Codehighlighter1_680_717_Closed_Image.style.display='inline'; Codehighlighter1_680_717_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_680_717_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_680_717_Closed_Text.style.display='none'; Codehighlighter1_680_717_Open_Image.style.display='inline'; Codehighlighter1_680_717_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="COLOR: #000000">  Person.prototype.toString </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000"> ()  </span><span id="Codehighlighter1_680_717_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_680_717_Open_Text"><span style="COLOR: #000000">{ </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">  'Person的prototpe中的toString'}</span></span><span style="COLOR: #000000"> ;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />alert(o);<br /><img id="Codehighlighter1_757_785_Open_Image" onclick="this.style.display='none'; Codehighlighter1_757_785_Open_Text.style.display='none'; Codehighlighter1_757_785_Closed_Image.style.display='inline'; Codehighlighter1_757_785_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_757_785_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_757_785_Closed_Text.style.display='none'; Codehighlighter1_757_785_Open_Image.style.display='inline'; Codehighlighter1_757_785_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />o.toString </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000"> ()  </span><span id="Codehighlighter1_757_785_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_757_785_Open_Text"><span style="COLOR: #000000">{ </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">  '我覆盖了toString方法了啊'}</span></span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />alert(o);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />alert('我不能访问前面的toString了。如果有super就好了！');<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 其实还是可以访问到被覆盖的原型的。那样太复杂了。 </span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />//</span><span style="COLOR: #008000"> --&gt; </span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">SCRIPT</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><p><br /></p><img src ="http://www.blogjava.net/zkjbeyond/aggbug/41530.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zkjbeyond/" target="_blank">原创专栏 开源学习</a> 2006-04-17 23:07 <a href="http://www.blogjava.net/zkjbeyond/archive/2006/04/17/41530.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript进阶之对象篇 (2)大家熟悉的javascript对象</title><link>http://www.blogjava.net/zkjbeyond/archive/2006/04/17/41527.html</link><dc:creator>原创专栏 开源学习</dc:creator><author>原创专栏 开源学习</author><pubDate>Mon, 17 Apr 2006 15:03:00 GMT</pubDate><guid>http://www.blogjava.net/zkjbeyond/archive/2006/04/17/41527.html</guid><wfw:comment>http://www.blogjava.net/zkjbeyond/comments/41527.html</wfw:comment><comments>http://www.blogjava.net/zkjbeyond/archive/2006/04/17/41527.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zkjbeyond/comments/commentRss/41527.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zkjbeyond/services/trackbacks/41527.html</trackback:ping><description><![CDATA[
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">SCRIPT LANGUAGE </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> JavaScript </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #000000">&lt;!--</span>
				<span style="COLOR: #000000"> <br /><img id="Codehighlighter1_83_105_Open_Image" onclick="this.style.display='none'; Codehighlighter1_83_105_Open_Text.style.display='none'; Codehighlighter1_83_105_Closed_Image.style.display='inline'; Codehighlighter1_83_105_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_83_105_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_83_105_Closed_Text.style.display='none'; Codehighlighter1_83_105_Open_Image.style.display='inline'; Codehighlighter1_83_105_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />Object.prototype.toString </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> function ()  </span>
				<span id="Codehighlighter1_83_105_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_83_105_Open_Text">
						<span style="COLOR: #000000">{ </span>
						<span style="COLOR: #0000ff">return</span>
						<span style="COLOR: #000000">  </span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000">myToString</span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000">}</span>
				</span>
				<span style="COLOR: #000000"> ;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> var  o </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000">  Object();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />o.name </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">'</span>
				<span style="COLOR: #000000">zkj</span>
				<span style="COLOR: #000000">'</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />o.age </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">25</span>
				<span style="COLOR: #000000"> ;<br /><img id="Codehighlighter1_185_234_Open_Image" onclick="this.style.display='none'; Codehighlighter1_185_234_Open_Text.style.display='none'; Codehighlighter1_185_234_Closed_Image.style.display='inline'; Codehighlighter1_185_234_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_185_234_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_185_234_Closed_Text.style.display='none'; Codehighlighter1_185_234_Open_Image.style.display='inline'; Codehighlighter1_185_234_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />o.desc </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> function ()  </span>
				<span id="Codehighlighter1_185_234_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_185_234_Open_Text">
						<span style="COLOR: #000000">{ </span>
						<span style="COLOR: #0000ff">return</span>
						<span style="COLOR: #000000">  </span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000">姓名：</span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">this</span>
						<span style="COLOR: #000000"> .name </span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000">,年龄:</span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">this</span>
						<span style="COLOR: #000000"> .age}</span>
				</span>
				<span style="COLOR: #000000"> ;<br /><img id="Codehighlighter1_263_410_Open_Image" onclick="this.style.display='none'; Codehighlighter1_263_410_Open_Text.style.display='none'; Codehighlighter1_263_410_Closed_Image.style.display='inline'; Codehighlighter1_263_410_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_263_410_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_263_410_Closed_Text.style.display='none'; Codehighlighter1_263_410_Open_Image.style.display='inline'; Codehighlighter1_263_410_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /> </span>
				<span style="COLOR: #0000ff">for</span>
				<span style="COLOR: #000000"> ( var  key  in  o)  </span>
				<span id="Codehighlighter1_263_410_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_263_410_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    alert(key </span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000">:</span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000"> o[key] </span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000"> type:</span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000"> typeof (o[key]))<br /><img id="Codehighlighter1_365_407_Open_Image" onclick="this.style.display='none'; Codehighlighter1_365_407_Open_Text.style.display='none'; Codehighlighter1_365_407_Closed_Image.style.display='inline'; Codehighlighter1_365_407_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_365_407_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_365_407_Closed_Text.style.display='none'; Codehighlighter1_365_407_Open_Image.style.display='inline'; Codehighlighter1_365_407_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  </span>
						<span style="COLOR: #0000ff">if</span>
						<span style="COLOR: #000000"> ( typeof (o[key]) </span>
						<span style="COLOR: #000000">==</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000"> function </span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000">)  </span>
						<span id="Codehighlighter1_365_407_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />