﻿<?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-臭美</title><link>http://www.blogjava.net/zddava/</link><description>there is no hiding place</description><language>zh-cn</language><lastBuildDate>Tue, 12 May 2026 21:36:44 GMT</lastBuildDate><pubDate>Tue, 12 May 2026 21:36:44 GMT</pubDate><ttl>60</ttl><item><title>oscache源代码阅读(四) -- JSP/Servlet缓存CacheFilter</title><link>http://www.blogjava.net/zddava/archive/2010/12/20/341124.html</link><dc:creator>臭美</dc:creator><author>臭美</author><pubDate>Mon, 20 Dec 2010 00:42:00 GMT</pubDate><guid>http://www.blogjava.net/zddava/archive/2010/12/20/341124.html</guid><wfw:comment>http://www.blogjava.net/zddava/comments/341124.html</wfw:comment><comments>http://www.blogjava.net/zddava/archive/2010/12/20/341124.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/zddava/comments/commentRss/341124.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zddava/services/trackbacks/341124.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: oscache对于jsp/servlet的缓存是使用Filter来实现的，对应的类是com.opensymphony.oscache.web.filter.CacheFilter，既然是Filter那么要看的自然主要有三个方法：init、doFilter和destroy，这里#destroy()并没有具体实现，只关注前两个即可，首先看一下#init()方法，&nbsp;&nbsp;&nbs...&nbsp;&nbsp;<a href='http://www.blogjava.net/zddava/archive/2010/12/20/341124.html'>阅读全文</a><img src ="http://www.blogjava.net/zddava/aggbug/341124.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zddava/" target="_blank">臭美</a> 2010-12-20 08:42 <a href="http://www.blogjava.net/zddava/archive/2010/12/20/341124.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oscache源代码阅读(三) -- 基本缓存实现</title><link>http://www.blogjava.net/zddava/archive/2010/12/16/340847.html</link><dc:creator>臭美</dc:creator><author>臭美</author><pubDate>Thu, 16 Dec 2010 01:19:00 GMT</pubDate><guid>http://www.blogjava.net/zddava/archive/2010/12/16/340847.html</guid><wfw:comment>http://www.blogjava.net/zddava/comments/340847.html</wfw:comment><comments>http://www.blogjava.net/zddava/archive/2010/12/16/340847.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/zddava/comments/commentRss/340847.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zddava/services/trackbacks/340847.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: oscache的默认缓存实现是由4个类组成的，如下图所示：首先来看一下是如何放入缓存的操作吧，也就是AbstractConcurrentReadCache类的#put()方法：&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;Object&nbsp;put(Object&nbsp;key,&nbsp;Object&nbsp;value)&nbsp;...&nbsp;&nbsp;<a href='http://www.blogjava.net/zddava/archive/2010/12/16/340847.html'>阅读全文</a><img src ="http://www.blogjava.net/zddava/aggbug/340847.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zddava/" target="_blank">臭美</a> 2010-12-16 09:19 <a href="http://www.blogjava.net/zddava/archive/2010/12/16/340847.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oscache源代码阅读(二) -- 从缓存中读取pojo</title><link>http://www.blogjava.net/zddava/archive/2010/12/15/340731.html</link><dc:creator>臭美</dc:creator><author>臭美</author><pubDate>Wed, 15 Dec 2010 00:45:00 GMT</pubDate><guid>http://www.blogjava.net/zddava/archive/2010/12/15/340731.html</guid><wfw:comment>http://www.blogjava.net/zddava/comments/340731.html</wfw:comment><comments>http://www.blogjava.net/zddava/archive/2010/12/15/340731.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zddava/comments/commentRss/340731.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zddava/services/trackbacks/340731.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 现在开始要介绍的从缓存中读取数据的过程，还是在GeneralCacheAdministrator#getFromCache()，这里有3个同名方法，还是找一个参数最多的：&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;*//**&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Get&nbsp;an&nbsp;object&nbsp;from&...&nbsp;&nbsp;<a href='http://www.blogjava.net/zddava/archive/2010/12/15/340731.html'>阅读全文</a><img src ="http://www.blogjava.net/zddava/aggbug/340731.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zddava/" target="_blank">臭美</a> 2010-12-15 08:45 <a href="http://www.blogjava.net/zddava/archive/2010/12/15/340731.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oscache源代码阅读(一) -- 将pojo放入缓存</title><link>http://www.blogjava.net/zddava/archive/2010/12/14/OSCache.html</link><dc:creator>臭美</dc:creator><author>臭美</author><pubDate>Tue, 14 Dec 2010 00:37:00 GMT</pubDate><guid>http://www.blogjava.net/zddava/archive/2010/12/14/OSCache.html</guid><wfw:comment>http://www.blogjava.net/zddava/comments/340574.html</wfw:comment><comments>http://www.blogjava.net/zddava/archive/2010/12/14/OSCache.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zddava/comments/commentRss/340574.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zddava/services/trackbacks/340574.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 其实之前我完全没有接触过oscache，今天突发奇想，准备看看缓存是怎么实现的，google了一下，决定看看oscache的源码，简单的写了个TestCase：&nbsp;&nbsp;&nbsp;&nbsp;@Test&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;testPojoCache()&nbsp;throws&nbsp;Except...&nbsp;&nbsp;<a href='http://www.blogjava.net/zddava/archive/2010/12/14/OSCache.html'>阅读全文</a><img src ="http://www.blogjava.net/zddava/aggbug/340574.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zddava/" target="_blank">臭美</a> 2010-12-14 08:37 <a href="http://www.blogjava.net/zddava/archive/2010/12/14/OSCache.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat NIO源代码分析(三) -- Protocol和Processor</title><link>http://www.blogjava.net/zddava/archive/2010/12/09/340109.html</link><dc:creator>臭美</dc:creator><author>臭美</author><pubDate>Thu, 09 Dec 2010 01:47:00 GMT</pubDate><guid>http://www.blogjava.net/zddava/archive/2010/12/09/340109.html</guid><wfw:comment>http://www.blogjava.net/zddava/comments/340109.html</wfw:comment><comments>http://www.blogjava.net/zddava/archive/2010/12/09/340109.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zddava/comments/commentRss/340109.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zddava/services/trackbacks/340109.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 现在请求到了Protocol(Http11NioProtocol)的#process()方法了，由于方法较长，很多代码没有列出：&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;SocketState&nbsp;process(NioChannel&nbsp;socket)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb...&nbsp;&nbsp;<a href='http://www.blogjava.net/zddava/archive/2010/12/09/340109.html'>阅读全文</a><img src ="http://www.blogjava.net/zddava/aggbug/340109.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zddava/" target="_blank">臭美</a> 2010-12-09 09:47 <a href="http://www.blogjava.net/zddava/archive/2010/12/09/340109.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat NIO源代码分析(二) -- Poller</title><link>http://www.blogjava.net/zddava/archive/2010/12/08/340029.html</link><dc:creator>臭美</dc:creator><author>臭美</author><pubDate>Wed, 08 Dec 2010 00:48:00 GMT</pubDate><guid>http://www.blogjava.net/zddava/archive/2010/12/08/340029.html</guid><wfw:comment>http://www.blogjava.net/zddava/comments/340029.html</wfw:comment><comments>http://www.blogjava.net/zddava/archive/2010/12/08/340029.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zddava/comments/commentRss/340029.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zddava/services/trackbacks/340029.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 接着上面的流程，现在请求到了Poller的#register()方法。&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;register(final&nbsp;NioChannel&nbsp;socket)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;socket.setPol...&nbsp;&nbsp;<a href='http://www.blogjava.net/zddava/archive/2010/12/08/340029.html'>阅读全文</a><img src ="http://www.blogjava.net/zddava/aggbug/340029.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zddava/" target="_blank">臭美</a> 2010-12-08 08:48 <a href="http://www.blogjava.net/zddava/archive/2010/12/08/340029.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat NIO源代码分析(一) -- Acceptor</title><link>http://www.blogjava.net/zddava/archive/2010/12/07/339950.html</link><dc:creator>臭美</dc:creator><author>臭美</author><pubDate>Tue, 07 Dec 2010 01:32:00 GMT</pubDate><guid>http://www.blogjava.net/zddava/archive/2010/12/07/339950.html</guid><wfw:comment>http://www.blogjava.net/zddava/comments/339950.html</wfw:comment><comments>http://www.blogjava.net/zddava/archive/2010/12/07/339950.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zddava/comments/commentRss/339950.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zddava/services/trackbacks/339950.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这里主要讲一下Tomcat使用NIO启动和进行请求处理的大致流程，使用的源码版本是7.0.5，对于其他处理等流程就不写了，我在别的文章里已经大致写过了，不过是用的6.0版本：http://zddava.javaeye.com/category/53603。当Tomcat配置成使用NIO时，启动过程其实和过去差不多，也是Connector#startInternal -&gt; Protocol...&nbsp;&nbsp;<a href='http://www.blogjava.net/zddava/archive/2010/12/07/339950.html'>阅读全文</a><img src ="http://www.blogjava.net/zddava/aggbug/339950.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zddava/" target="_blank">臭美</a> 2010-12-07 09:32 <a href="http://www.blogjava.net/zddava/archive/2010/12/07/339950.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于Javascript的几种继承实现方式</title><link>http://www.blogjava.net/zddava/archive/2010/10/09/334009.html</link><dc:creator>臭美</dc:creator><author>臭美</author><pubDate>Sat, 09 Oct 2010 02:28:00 GMT</pubDate><guid>http://www.blogjava.net/zddava/archive/2010/10/09/334009.html</guid><wfw:comment>http://www.blogjava.net/zddava/comments/334009.html</wfw:comment><comments>http://www.blogjava.net/zddava/archive/2010/10/09/334009.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zddava/comments/commentRss/334009.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zddava/services/trackbacks/334009.html</trackback:ping><description><![CDATA[<p>1. 伪类(Pseudoclassical)<br />
简单的说，伪类就是通过定义一个构造函数并扩充它的prototype来实现的。<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 alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">&lt;</span><span style="color: #000000">html</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&lt;</span><span style="color: #000000">head</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&lt;</span><span style="color: #000000">title</span><span style="color: #000000">&gt;</span><span style="color: #000000">test</span><span style="color: #000000">&lt;/</span><span style="color: #000000">title</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" 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 id="Codehighlighter1_59_510_Open_Image" onclick="this.style.display='none'; Codehighlighter1_59_510_Open_Text.style.display='none'; Codehighlighter1_59_510_Closed_Image.style.display='inline'; Codehighlighter1_59_510_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_59_510_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_59_510_Closed_Text.style.display='none'; Codehighlighter1_59_510_Open_Image.style.display='inline'; Codehighlighter1_59_510_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;test()</span><span id="Codehighlighter1_59_510_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_95_130_Open_Image" onclick="this.style.display='none'; Codehighlighter1_95_130_Open_Text.style.display='none'; Codehighlighter1_95_130_Closed_Image.style.display='inline'; Codehighlighter1_95_130_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_95_130_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_95_130_Closed_Text.style.display='none'; Codehighlighter1_95_130_Open_Image.style.display='inline'; Codehighlighter1_95_130_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;Father&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">(firstName)</span><span id="Codehighlighter1_95_130_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.firstName&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;firstName;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img id="Codehighlighter1_170_200_Open_Image" onclick="this.style.display='none'; Codehighlighter1_170_200_Open_Text.style.display='none'; Codehighlighter1_170_200_Closed_Image.style.display='inline'; Codehighlighter1_170_200_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_170_200_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_170_200_Closed_Text.style.display='none'; Codehighlighter1_170_200_Open_Image.style.display='inline'; Codehighlighter1_170_200_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Father.prototype.name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">()</span><span id="Codehighlighter1_170_200_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.firstName;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img id="Codehighlighter1_245_309_Open_Image" onclick="this.style.display='none'; Codehighlighter1_245_309_Open_Text.style.display='none'; Codehighlighter1_245_309_Closed_Image.style.display='inline'; Codehighlighter1_245_309_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_245_309_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_245_309_Closed_Text.style.display='none'; Codehighlighter1_245_309_Open_Image.style.display='inline'; Codehighlighter1_245_309_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;Son&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">(firstName,&nbsp;lastName)</span><span id="Codehighlighter1_245_309_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.firstName&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;firstName;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.lastName&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;lastName;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Son.prototype&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Father();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img id="Codehighlighter1_379_431_Open_Image" onclick="this.style.display='none'; Codehighlighter1_379_431_Open_Text.style.display='none'; Codehighlighter1_379_431_Closed_Image.style.display='inline'; Codehighlighter1_379_431_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_379_431_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_379_431_Closed_Text.style.display='none'; Codehighlighter1_379_431_Open_Image.style.display='inline'; Codehighlighter1_379_431_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Son.prototype.name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">()</span><span id="Codehighlighter1_379_431_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.firstName&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.lastName;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;aSon&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Son(</span><span style="color: #000000">"</span><span style="color: #000000">San</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Zhang</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(aSon.name());&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;San&nbsp;Zhang</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" 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 alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&lt;</span><span style="color: #000000">body&nbsp;onload</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">test()</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">body</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">head</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">html</span><span style="color: #000000">&gt;</span></div>
<p><br />
可以看出，这种方法是没有私有属性的，并且不能访问父类的方法。<br />
<br />
2. 原型(Prototypal)<br />
利用原型方式来实现继承，就摒弃了伪类中向&#8220;类&#8221;这种方式靠拢的方法，而是用纯粹的对象来实现。<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 alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">&lt;</span><span style="color: #000000">html</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&lt;</span><span style="color: #000000">head</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&lt;</span><span style="color: #000000">title</span><span style="color: #000000">&gt;</span><span style="color: #000000">test</span><span style="color: #000000">&lt;/</span><span style="color: #000000">title</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" 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 id="Codehighlighter1_59_404_Open_Image" onclick="this.style.display='none'; Codehighlighter1_59_404_Open_Text.style.display='none'; Codehighlighter1_59_404_Closed_Image.style.display='inline'; Codehighlighter1_59_404_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_59_404_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_59_404_Closed_Text.style.display='none'; Codehighlighter1_59_404_Open_Image.style.display='inline'; Codehighlighter1_59_404_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;test()</span><span id="Codehighlighter1_59_404_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_77_202_Open_Image" onclick="this.style.display='none'; Codehighlighter1_77_202_Open_Text.style.display='none'; Codehighlighter1_77_202_Closed_Image.style.display='inline'; Codehighlighter1_77_202_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_77_202_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_77_202_Closed_Text.style.display='none'; Codehighlighter1_77_202_Open_Image.style.display='inline'; Codehighlighter1_77_202_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;aFather&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_77_202_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;firstName:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">San</span><span style="color: #000000">"</span><span style="color: #000000">,<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lastName:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Zhang</span><span style="color: #000000">"</span><span style="color: #000000">,<br />
<img id="Codehighlighter1_144_198_Open_Image" onclick="this.style.display='none'; Codehighlighter1_144_198_Open_Text.style.display='none'; Codehighlighter1_144_198_Closed_Image.style.display='inline'; Codehighlighter1_144_198_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_144_198_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_144_198_Closed_Text.style.display='none'; Codehighlighter1_144_198_Open_Image.style.display='inline'; Codehighlighter1_144_198_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getName:&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">()</span><span id="Codehighlighter1_144_198_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.firstName&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.lastName;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img id="Codehighlighter1_228_229_Open_Image" onclick="this.style.display='none'; Codehighlighter1_228_229_Open_Text.style.display='none'; Codehighlighter1_228_229_Closed_Image.style.display='inline'; Codehighlighter1_228_229_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_228_229_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_228_229_Closed_Text.style.display='none'; Codehighlighter1_228_229_Open_Image.style.display='inline'; Codehighlighter1_228_229_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;Son&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">()</span><span id="Codehighlighter1_228_229_Open_Text"><span style="color: #000000">{}</span></span><span style="color: #000000">;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Son.prototype&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;aFather;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;aSon&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Son();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aSon.firstName&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">XiaoSan</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(aSon.getName());&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;XiaoSan&nbsp;Zhang</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(Son.prototype.getName());&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;San&nbsp;Zhang</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" 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 alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&lt;</span><span style="color: #000000">body&nbsp;onload</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">test()</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">body</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">head</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">html</span><span style="color: #000000">&gt;</span></div>
<p><br />
可以看出，现在的继承是纯粹的对象与对象间的了，不过还有个问题，这个方式依然没有解决属性隐藏。<br />
<br />
3. 函数化(Functional)<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"  alt="" /><span style="color: #000000">&lt;</span><span style="color: #000000">html</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&lt;</span><span style="color: #000000">head</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&lt;</span><span style="color: #000000">title</span><span style="color: #000000">&gt;</span><span style="color: #000000">test</span><span style="color: #000000">&lt;/</span><span style="color: #000000">title</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></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 id="Codehighlighter1_62_1034_Open_Image" onclick="this.style.display='none'; Codehighlighter1_62_1034_Open_Text.style.display='none'; Codehighlighter1_62_1034_Closed_Image.style.display='inline'; Codehighlighter1_62_1034_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_62_1034_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_62_1034_Closed_Text.style.display='none'; Codehighlighter1_62_1034_Open_Image.style.display='inline'; Codehighlighter1_62_1034_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;test()</span><span id="Codehighlighter1_62_1034_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_114_434_Open_Image" onclick="this.style.display='none'; Codehighlighter1_114_434_Open_Text.style.display='none'; Codehighlighter1_114_434_Closed_Image.style.display='inline'; Codehighlighter1_114_434_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_114_434_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_114_434_Closed_Text.style.display='none'; Codehighlighter1_114_434_Open_Image.style.display='inline'; Codehighlighter1_114_434_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;father&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">(firstName,&nbsp;lastName)</span><span id="Codehighlighter1_114_434_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_140_141_Open_Image" onclick="this.style.display='none'; Codehighlighter1_140_141_Open_Text.style.display='none'; Codehighlighter1_140_141_Closed_Image.style.display='inline'; Codehighlighter1_140_141_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_140_141_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_140_141_Closed_Text.style.display='none'; Codehighlighter1_140_141_Open_Image.style.display='inline'; Codehighlighter1_140_141_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;instance&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_140_141_Open_Text"><span style="color: #000000">{}</span></span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;对外暴露的方法，此时firstName和lastName等于被隐藏了</span><span style="color: #008000"><br />
<img id="Codehighlighter1_229_256_Open_Image" onclick="this.style.display='none'; Codehighlighter1_229_256_Open_Text.style.display='none'; Codehighlighter1_229_256_Closed_Image.style.display='inline'; Codehighlighter1_229_256_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_229_256_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_229_256_Closed_Text.style.display='none'; Codehighlighter1_229_256_Open_Image.style.display='inline'; Codehighlighter1_229_256_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;instance.getFirstName&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">()</span><span id="Codehighlighter1_229_256_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;firstName;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_296_322_Open_Image" onclick="this.style.display='none'; Codehighlighter1_296_322_Open_Text.style.display='none'; Codehighlighter1_296_322_Closed_Image.style.display='inline'; Codehighlighter1_296_322_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_296_322_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_296_322_Closed_Text.style.display='none'; Codehighlighter1_296_322_Open_Image.style.display='inline'; Codehighlighter1_296_322_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;instance.getLastName&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">()</span><span id="Codehighlighter1_296_322_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;lastName;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_358_402_Open_Image" onclick="this.style.display='none'; Codehighlighter1_358_402_Open_Text.style.display='none'; Codehighlighter1_358_402_Closed_Image.style.display='inline'; Codehighlighter1_358_402_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_358_402_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_358_402_Closed_Text.style.display='none'; Codehighlighter1_358_402_Open_Image.style.display='inline'; Codehighlighter1_358_402_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;instance.getName&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">()</span><span id="Codehighlighter1_358_402_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;firstName&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;lastName;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;instance;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_493_785_Open_Image" onclick="this.style.display='none'; Codehighlighter1_493_785_Open_Text.style.display='none'; Codehighlighter1_493_785_Closed_Image.style.display='inline'; Codehighlighter1_493_785_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_493_785_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_493_785_Closed_Text.style.display='none'; Codehighlighter1_493_785_Open_Image.style.display='inline'; Codehighlighter1_493_785_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;son&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">(firstName,&nbsp;lastName)</span><span id="Codehighlighter1_493_785_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;这里就像OO语言一样，先调用父类的构造函数</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;instance&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;father(firstName,&nbsp;lastName);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;扩充方法，这里可以直接使用&#8220;父类&#8221;的方法，不过属性已经变化了</span><span style="color: #008000"><br />
<img id="Codehighlighter1_674_738_Open_Image" onclick="this.style.display='none'; Codehighlighter1_674_738_Open_Text.style.display='none'; Codehighlighter1_674_738_Closed_Image.style.display='inline'; Codehighlighter1_674_738_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_674_738_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_674_738_Closed_Text.style.display='none'; Codehighlighter1_674_738_Open_Image.style.display='inline'; Codehighlighter1_674_738_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;instance.nickname&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">()</span><span id="Codehighlighter1_674_738_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Little&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;instance.getLastName();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;instance;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;aFather&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;father(</span><span style="color: #000000">"</span><span style="color: #000000">San</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Zhang</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;aSon&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;son(</span><span style="color: #000000">"</span><span style="color: #000000">XiaoSan</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Zhang</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(aFather.getName());&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;San&nbsp;Zhang</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(aSon.getName());&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;XiaoSan&nbsp;Zhang</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(aSon.nickname());&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Litttle&nbsp;Zhang</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></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"  alt="" /></span><span style="color: #000000">&lt;</span><span style="color: #000000">body&nbsp;onload</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">test()</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">body</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">head</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">html</span><span style="color: #000000">&gt;</span></div>
      <img src ="http://www.blogjava.net/zddava/aggbug/334009.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zddava/" target="_blank">臭美</a> 2010-10-09 10:28 <a href="http://www.blogjava.net/zddava/archive/2010/10/09/334009.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>