﻿<?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>PHP博客-Programming Life-随笔分类-JavaScript</title><link>http://www.phpweblog.net/killjin/category/384.html</link><description>相信不能相信的，完成不能完成的。矛盾，就象征进步。</description><language>zh-cn</language><lastBuildDate>Sun, 02 Dec 2007 20:54:21 GMT</lastBuildDate><pubDate>Sun, 02 Dec 2007 20:54:21 GMT</pubDate><ttl>60</ttl><item><title>动态载入及操作外部JS文件的几种方法(未测试)</title><link>http://www.phpweblog.net/killjin/archive/2007/12/01/2447.html</link><dc:creator>Prog</dc:creator><author>Prog</author><pubDate>Sat, 01 Dec 2007 13:56:00 GMT</pubDate><guid>http://www.phpweblog.net/killjin/archive/2007/12/01/2447.html</guid><wfw:comment>http://www.phpweblog.net/killjin/comments/2447.html</wfw:comment><comments>http://www.phpweblog.net/killjin/archive/2007/12/01/2447.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/killjin/comments/commentRss/2447.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/killjin/services/trackbacks/2447.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"><span style="COLOR: #000000">No.1直接document.write<br><br></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">script&nbsp;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>document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;script&nbsp;src='test.js'&gt;&lt;\/script&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><br>No.2动态改变已有script的src属性<br><br></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">script&nbsp;src</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">''&nbsp;id</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">s1</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;&lt;/</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">script&nbsp;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>s1.src</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">test.js</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><br>No.3动态创建script元素<br></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;s2&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;document.createElement(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>s2.src</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">test.js</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br>document.body.insertAdjacentElement(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">BeforeBegin</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,s2);<br></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span></div>
<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"><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;LoadObj(){<br>&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">document.getElementById)&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">;<br>&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">arguments.length;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br>&nbsp;{<br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;file&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;arguments[i];<br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;fileref&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(loadedobjects.indexOf(file)</span><span style="COLOR: #000000">==-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;{&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Check&nbsp;to&nbsp;see&nbsp;if&nbsp;this&nbsp;object&nbsp;has&nbsp;not&nbsp;already&nbsp;been&nbsp;added&nbsp;to&nbsp;page&nbsp;before&nbsp;proceeding</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(file.indexOf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">.js</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">!=-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;{&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">If&nbsp;object&nbsp;is&nbsp;a&nbsp;js&nbsp;file</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;fileref</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">document.createElement('script')<br>&nbsp;&nbsp;&nbsp;&nbsp;fileref.setAttribute(</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">text/javascript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;fileref.setAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">src</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;file);<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(file.indexOf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">.css</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">!=-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;{&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">If&nbsp;object&nbsp;is&nbsp;a&nbsp;css&nbsp;file</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;fileref</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">document.createElement(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">link</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;fileref.setAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">rel</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">stylesheet</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;fileref.setAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">type</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">text/css</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;fileref.setAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">href</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;file);<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(fileref&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;document.getElementsByTagName(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">head</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">).item(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">).appendChild(fileref)<br>&nbsp;&nbsp;&nbsp;loadedobjects</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">file</span><span style="COLOR: #000000">+</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: #008000">//</span><span style="COLOR: #008000">Remember&nbsp;this&nbsp;object&nbsp;as&nbsp;being&nbsp;already&nbsp;added&nbsp;to&nbsp;page</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;}<br>&nbsp;}<br>};<br></span></div>
<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"><span style="COLOR: #000000">　Internet&nbsp;Explorer&nbsp;</span><span style="COLOR: #000000">5.5</span><span style="COLOR: #000000">&nbsp;和&nbsp;Netscape&nbsp;</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">&nbsp;在动态载入外部文件方面与以前的版本有所区别，这里所说的&#8220;动态&#8221;是指：用document.write&nbsp;来包含外部文件。假如你有一个外部文件如下：<br><br></span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;printMessage()&nbsp;{<br>alert(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">这是来自外部文件的信息！！：）</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>}<br>　　现在你想用下面的方法动态载入：<br><br><br></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">SCRIPT&nbsp;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>document.write('</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">SCRIPT&nbsp;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">&nbsp;SRC</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">exam.js</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;&lt;/</span><span style="COLOR: #000000">SCRIPT</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">');<br></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">SCRIPT</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>　　现在，你如果当此文件刚载入你就按下面的方法去调用函数&nbsp;printMessage()&nbsp;的话，你将得到一个错误。<br><br><br></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">SCRIPT&nbsp;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>document.write('</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">SCRIPT&nbsp;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">&nbsp;SRC</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">exam.js</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;&lt;/</span><span style="COLOR: #000000">SCRIPT</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">');<br>printMessage();<br></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">SCRIPT</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>　　其原因就是：IE5.5和NN6在解释主文件代码时不会等待外部文件完全载入完毕。正确的做法是在载入外部文件后立即关闭</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">：<br><br></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">SCRIPT&nbsp;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>document.write('</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">SCRIPT&nbsp;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">&nbsp;SRC</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">exam.js</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;&lt;/</span><span style="COLOR: #000000">SCRIPT</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">');<br></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">SCRIPT</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">SCRIPT&nbsp;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>printMessage();<br></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">SCRIPT</span><span style="COLOR: #000000">&gt;</span></div>
<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"><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">label&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="w1"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">hloowowo</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">label</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">button&nbsp;</span><span style="COLOR: #ff0000">onclick</span><span style="COLOR: #0000ff">="loadjs('test.js')"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">loadjs</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">button</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">button&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="display=false"</span><span style="COLOR: #ff0000">&nbsp;id</span><span style="COLOR: #0000ff">="j"</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">="alert"</span><span style="COLOR: #ff0000">&nbsp;onclick</span><span style="COLOR: #0000ff">="al(document.getElementById('w1').innerHTML)"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">jjjjjjjj</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">button</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>/////////////////////////////////////////////////////////////////////////////<br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">script&nbsp;</span><span style="COLOR: #ff0000">language</span><span style="COLOR: #0000ff">="JavaScript"</span><span style="COLOR: #ff0000">&nbsp;type</span><span style="COLOR: #0000ff">="text/javascript"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;!--</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br></span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;JsLoader(){<br>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">this</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">.load</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(url){<br>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">获取所有的&lt;scrcipt&gt;标记</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;ss</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">document.getElementsByTagName(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">script</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">判断指定的文件是否已经包含，如果已包含则触发onsuccess事件并返回&nbsp;&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">for</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(i</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;i</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">ss.length;i</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">++</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)<br>&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">if</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(ss[i].src&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&amp;&amp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;ss[i].src.indexOf(url)</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">!=-</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">1</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">this</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">.onsuccess();&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">创建script结点，并将其属性设为为外联JavaScript文件&nbsp;&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;&nbsp;&nbsp;s</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">document.createElement(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">script</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;s.type</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">text/javascript</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;s.src</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">http://blog.bitscn.com/url</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">获取head结点，并将&lt;script&gt;插入到其中&nbsp;&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;head</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">document.getElementsByTagName(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">head</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)[</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">];&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;head.appendChild(s);&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">获取对象自身的引用&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;self</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">this</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<br>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">对于IE浏览器，使用readystatechange事件判断是否载入成功&nbsp;&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">对于其他浏览器，使用onload事件判断载入是否成功&nbsp;&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;&nbsp;&nbsp;s.onload</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">s.onreadystatechange</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">()<br>&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">在此函数中this指针指的是s结点对象，而不是JsLoader实例，&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">所以必须用self来调用onsuccess事件，下同。&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">if</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">this</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">.readyState&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&amp;&amp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">this</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">.readyState</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">==</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">loading</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.onsuccess();&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;s.onerror</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(){<br>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">如果发生错误，则删除插入的结点，并触发失败事件&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;&nbsp;&nbsp;head.removeChild(s);&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;self.onfailure();&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;};<br>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">定义载入成功事件&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">this</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">.onsuccess</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(){};&nbsp;<br>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">定义载入失败事件&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">this</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">.onfailure</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(){};}<br>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">创建对象</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;loadjs(opjs)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;document.getElementById(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">j</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">).value</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">eeeeeeeee</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<br>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;jl</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">new</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;JsLoader();<br>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">定义载入成功处理程序</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;&nbsp;&nbsp;jl.onsuccess</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">()<br>&nbsp;&nbsp;&nbsp;{&nbsp;<br>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">al("dddd成功了");</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">定义载入失败处理程序</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;&nbsp;&nbsp;jl.onfailure</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">()<br>&nbsp;&nbsp;&nbsp;{&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">文件载入失败！</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">开始载入</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;&nbsp;&nbsp;jl.load(opjs);<br>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">alert("test.js");</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">--&gt;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">script</span><span style="COLOR: #0000ff">&gt;</span></div>
<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"><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">script&nbsp;type</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">text/javascript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;LoadJs(sSrc){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;oHead&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;document.getElementsByTagName('head')[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;oScript&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;document.createElement('script');oScript.type&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">text/javascript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oScript.src&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;sSrc;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oHead.appendChild(oScript);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span></div>
<img src ="http://www.phpweblog.net/killjin/aggbug/2447.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/killjin/" target="_blank">Prog</a> 2007-12-01 21:56 <a href="http://www.phpweblog.net/killjin/archive/2007/12/01/2447.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JS备忘，函数、类原型。</title><link>http://www.phpweblog.net/killjin/archive/2007/11/30/2418.html</link><dc:creator>Prog</dc:creator><author>Prog</author><pubDate>Thu, 29 Nov 2007 19:44:00 GMT</pubDate><guid>http://www.phpweblog.net/killjin/archive/2007/11/30/2418.html</guid><wfw:comment>http://www.phpweblog.net/killjin/comments/2418.html</wfw:comment><comments>http://www.phpweblog.net/killjin/archive/2007/11/30/2418.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/killjin/comments/commentRss/2418.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/killjin/services/trackbacks/2418.html</trackback:ping><description><![CDATA[<p>&#160;</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><br></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;abc</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(){alert(</span><span style="COLOR: #000000">44</span><span style="COLOR: #000000">)}<br></span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;foo(){&nbsp;<br>foo.abc&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(){alert('def')}&nbsp;<br><br></span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.abc&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(){alert('xyz')}&nbsp;<br>abc&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(){alert('@@@@@')};&nbsp;<br></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;abc&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(){alert('$$$$$$')}&nbsp;<br>}&nbsp;<br>foo.prototype.abc&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(){alert('</span><span style="COLOR: #000000">456</span><span style="COLOR: #000000">');}&nbsp;<br>foo.abc&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(){alert('</span><span style="COLOR: #000000">123</span><span style="COLOR: #000000">');}&nbsp;<br></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;f&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;foo();&nbsp;<br><br>f.abc();&nbsp;<br>foo.abc();&nbsp;<br><br>abc();&nbsp;<br></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span></div>
<p><a href="http://blog.csdn.net/lenel/archive/2007/10/10/1818018.aspx">http://blog.csdn.net/lenel/archive/2007/10/10/1818018.aspx</a>&nbsp;比较好的试题<br><a href="http://topic.csdn.net/u/20070103/12/e957caa0-6b08-4ca7-9206-bf2bbcc4ef58.html">http://topic.csdn.net/u/20070103/12/e957caa0-6b08-4ca7-9206-bf2bbcc4ef58.html</a>&nbsp;关于某人的提问<br><a href="http://www.cnblogs.com/thinhunan/archive/2006/04/01/DeveloperNotesForPrototype.html">http://www.cnblogs.com/thinhunan/archive/2006/04/01/DeveloperNotesForPrototype.html</a>&nbsp; prototype.js　1.4版开发者手册</p>
<img src ="http://www.phpweblog.net/killjin/aggbug/2418.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/killjin/" target="_blank">Prog</a> 2007-11-30 03:44 <a href="http://www.phpweblog.net/killjin/archive/2007/11/30/2418.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ajaxPro /prototype.js 学习笔记 </title><link>http://www.phpweblog.net/killjin/archive/2007/11/26/2390.html</link><dc:creator>Prog</dc:creator><author>Prog</author><pubDate>Sun, 25 Nov 2007 20:05:00 GMT</pubDate><guid>http://www.phpweblog.net/killjin/archive/2007/11/26/2390.html</guid><wfw:comment>http://www.phpweblog.net/killjin/comments/2390.html</wfw:comment><comments>http://www.phpweblog.net/killjin/archive/2007/11/26/2390.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/killjin/comments/commentRss/2390.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/killjin/services/trackbacks/2390.html</trackback:ping><description><![CDATA[ 
   <p style="font-size: 10pt;">以下均为个人理解，如有不妥，请及时指正。<br>1、&nbsp; 定义和实现类之间的继承</p>
<p style="font-size: 10pt;">A、 通过 直接引用和函数调用</p>
<p style="font-size: 10pt;">function Child(name,age,sex)<o:p></o:p></p>
<p style="font-size: 10pt;">{ <o:p></o:p></p>
<p style="font-size: 10pt;">this.name = name;<o:p></o:p></p>
<p style="font-size: 10pt;">this.age = age;<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp; this.sex = sex;<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp; this.toString = function()<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp; {<o:p></o:p></p>
<p style="font-size: 10pt;">window.alert(this.name+"/"+this.age+"/"+this.sex); <o:p></o:p></p>
<p style="font-size: 10pt;">} <o:p></o:p></p>
<p style="font-size: 10pt;">}<o:p></o:p></p>
<p style="font-size: 10pt;">function Guy(name,age,sex) <o:p></o:p></p>
<p style="font-size: 10pt;">{<o:p></o:p></p>
<p style="font-size: 10pt;">this.Super = Child; <o:p></o:p></p>
<p style="font-size: 10pt;">this.Super(name,age,sex);<o:p></o:p></p>
<p style="font-size: 10pt;">} <o:p></o:p></p>
<p style="font-size: 10pt;">var __child = new Guy("me","10","M");<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp;__child.toString();<o:p></o:p></p>
<p style="font-size: 10pt;">解释：<o:p></o:p></p>
<p style="font-size: 10pt;">继承的过程先是将Child的对象原型赋给 Guy 下的 Super 方法, 然后在执行完 Child 的构造函数后, Child的属性就被自动地加到了 Guy 的属性列表中.这主要是由于在 Guy 中通过 this 来调用的 Super(也就是 Child) 构造函数造成的, 通过此种方式调用 Child 构造函数时, JavaScript 解释器会把 Child 中的 this 与 Guy 中的 this 理解成位于同一个作用域下的 this 关键字, 所以就产生了继承的效果。当然我们也可以用InheritsForm，base等关键字来描述继承父类。<o:p></o:p></p>
<p style="font-size: 10pt;">另外, 需要说明的是, 对于任何一个实例化的对象, 你任意地为它添加属性或方法, 如下所示:<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp; var newGuy = new Gue();<br>&nbsp; newGuy.addprop = "added property to instance object";<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">很明显, 通过此种方式添加的属性和方法只对当前实例化对象有效, 不会影响所有的同类型对象实例. 无疑, 它是你创造的一个独一无二的对象实例.<o:p></o:p></p>
<p style="font-size: 10pt;"><o:p>&nbsp;</o:p></p>
<p style="font-size: 10pt;">B、 通过prototype 关键字</p>
<p style="font-size: 10pt;">function Guy(name,age,sex)<o:p></o:p></p>
<p style="font-size: 10pt;">{<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp; this.name = name;<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp; this.age = age;<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp; this.sex = sex;<o:p></o:p></p>
<p style="font-size: 10pt;">}<o:p></o:p></p>
<p style="font-size: 10pt;">Guy.prototype = new Child();<o:p></o:p></p>
<p style="font-size: 10pt;">var guy = new Guy(&#8220;me&#8221;,&#8221;<st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="10" unitname="&#8221;">10&#8221;</st1:chmetcnv>,&#8221;M&#8221;);<o:p></o:p></p>
<p style="font-size: 10pt;">guy.toString();<o:p></o:p></p>
<p style="font-size: 10pt;">如果我们要覆盖父类也就是Child的tostring()方法，可以这样定义:<o:p></o:p></p>
<p style="font-size: 10pt;">Guy.prototype.toString = function()<o:p></o:p></p>
<p style="font-size: 10pt;">{<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp; window.alert(&#8220;&#8230;&#8230;.&#8221;);<o:p></o:p></p>
<p style="font-size: 10pt;">}<o:p></o:p></p>
<p style="font-size: 10pt;">这里说明下:<o:p></o:p></p>
<p style="font-size: 10pt;">先定义一个类的prototype 为另外一个类，也就是定义该类为某个类的子类。</p>
<p style="font-size: 10pt;">再通过Class.prototype.functionName = function(Args)来实现方法覆盖。</p>
<p style="font-size: 10pt;">整个Guy的代码如下:<br>function Guy(name,age,sex)<o:p></o:p></p>
<p style="font-size: 10pt;">{<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp; this.name = name;<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp; this.age = age;<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp; this.sex = sex;<o:p></o:p></p>
<p style="font-size: 10pt;">}<o:p></o:p></p>
<p style="font-size: 10pt;">Guy.prototype = new Child();<o:p></o:p></p>
<p style="font-size: 10pt;">Guy.prototype.toString = function()<o:p></o:p></p>
<p style="font-size: 10pt;">{<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp; window.alert(&#8220;&#8230;&#8230;.&#8221;);<o:p></o:p></p>
<p style="font-size: 10pt;">}<o:p></o:p></p>
<p style="font-size: 10pt;">var guy = new Guy(&#8220;me&#8221;,&#8221;<st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="10" unitname="&#8221;">10&#8221;</st1:chmetcnv>,&#8221;M&#8221;);<o:p></o:p></p>
<p style="font-size: 10pt;">guy.toString();<o:p></o:p></p>
<p style="font-size: 10pt;">C、 但是javascript 中好象不支持多深度的继承。也就是说无法实现A&#224;B&#224;C当中的A向上调用C的方法。</p>
<p style="font-size: 10pt;">2、&nbsp; 关于prototype 的几点理解</p>
<p style="font-size: 10pt;">A.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p>&nbsp;</o:p></p>
<p style="font-size: 10pt;">var AjaxPro.IFrameXmlHttp.TestClass = new Function();<o:p></o:p></p>
<p style="font-size: 10pt;"><o:p>&nbsp;</o:p></p>
<p style="font-size: 10pt;">AjaxPro.IFrameXmlHttp.TestClass.prototype.abort = function() <o:p></o:p></p>
<p style="font-size: 10pt;">{ <o:p></o:p></p>
<p style="font-size: 10pt;">window.alert("this is AjaxPro.IFrameXmlHttp ");<o:p></o:p></p>
<p style="font-size: 10pt;">} <o:p></o:p></p>
<p style="font-size: 10pt;"><o:p>&nbsp;</o:p></p>
<p style="font-size: 10pt;">AjaxPro.IFrameXmlHttp.TestClass.prototype = {<o:p></o:p></p>
<p style="font-size: 10pt;">stopMe: function(){<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.alert("Oh,don't stop me");<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp; },<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp; reset: function(){<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; window.alert(&#8220;Oh,is reseting now,please waite&#8221;);<o:p></o:p></p>
<p style="font-size: 10pt;">}<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp;}; <o:p></o:p></p>
<p style="font-size: 10pt;">var Test = new AjaxPro.IFrameXmlHttp.TestClass(); <o:p></o:p></p>
<p style="font-size: 10pt;">Test.abort(); <o:p></o:p></p>
<p style="font-size: 10pt;">Test.stopMe();<o:p></o:p></p>
<p style="font-size: 10pt;">在两者同时出现的时候，请将外部定义的prototype 函数放在内部定义的prototype = {}的后面，否则后者会覆盖前者。</p>
<p style="font-size: 10pt;"><o:p>&nbsp;</o:p></p>
<p style="font-size: 10pt;">B.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果定义了B.prototype = new A() //new A; ，那么当调用B.prototype.function = function() 时，就可以覆盖A中的方法或是新定义属于B的方法。这个过程就象是如下:</p>
<p style="font-size: 10pt;">prototype = new A() 语句时，就把A 给了B.prototype 属性了。再使用B.prototype.function&nbsp; = function(){} 时，就类似的 A.function = function(){}，因为前面我们已经将B.prototype = new A()了。</p>
<p style="font-size: 10pt;"><o:p>&nbsp;</o:p></p>
<p style="font-size: 10pt;">C.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 通过 this关键字定义的属性和方法是同对象本身处于同一个地址空间内的; 而通过 prototype 定义的属性和方法, 是通过所谓的 "原型链" 进行管理的, 其下的的属性和方法不位于同一个地址空间之间, 当其调用这种属性或方法时, 必须通过 "链表" 才能索引到其下的某个属性或方法. 也就说, 调用以原型方式定义的属性和方法会有一个类似于链表的 "回溯" 操作.</p>
<p style="font-size: 10pt;"><o:p>&nbsp;</o:p></p>
<p style="font-size: 10pt;">D.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 构造过程中，原型对象是一次性生成的；新对象只持有这个原型实例的引用 (并用&#8220;写复制&#8221;的机制来存取其属性)，而并不再调用原型的构造器。<o:p></o:p></p>
<p style="font-size: 10pt;"><o:p>&nbsp;</o:p></p>
<p style="font-size: 10pt;">E.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最好的理解就是，prototype 表示 附加给我的东西，我便和你所有属性和方法的指针指向一致。在我申明和你相同的属性时，实际上是覆盖了你对应的属性。<o:p></o:p></p>
<p style="font-size: 10pt;">例如:<o:p></o:p></p>
<p style="font-size: 10pt;">Function A()<o:p></o:p></p>
<p style="font-size: 10pt;">{<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; This.name&nbsp; = &#8220;is A&#8221;;<o:p></o:p></p>
<p style="font-size: 10pt;">}<o:p></o:p></p>
<p style="font-size: 10pt;">Function B()<o:p></o:p></p>
<p style="font-size: 10pt;">{<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; This.name = &#8220;is B&#8221;;<o:p></o:p></p>
<p style="font-size: 10pt;">}<o:p></o:p></p>
<p style="font-size: 10pt;">//A对象实例赋植给prototype，无形之中创建了个指针链。<o:p></o:p></p>
<p style="font-size: 10pt;">B.prototype = new A();<o:p></o:p></p>
<p style="font-size: 10pt;">//由于 _bb和new A()拥有同名name ，所以编译器会认为同一要素，因此就覆盖A中的name.<o:p></o:p></p>
<p style="font-size: 10pt;">Var _bb = new B(); <o:p></o:p></p>
<p style="font-size: 10pt;"><o:p>&nbsp;</o:p></p>
<p style="font-size: 10pt;"><o:p>&nbsp;</o:p></p>
<p style="font-size: 10pt;">3、&nbsp; Prototype.js 中对AddNameSpace 理解</p>
<p style="font-size: 10pt;">最初代码如下：</p>
<p style="font-size: 10pt;" align="left">if(!window.addNamespace) {<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp; window.addNamespace = function(ns) {<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var nsParts = ns.split(".");<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var root = window;<o:p></o:p></p>
<p style="font-size: 10pt;" align="left"><o:p>&nbsp;</o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(var i=0; i&lt;nsParts.length; i++) {<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(typeof root[nsParts[i]] == "undefined")<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root[nsParts[i]] = {};<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root = root[nsParts[i]];<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp; }<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">}<o:p></o:p></p>
<p style="font-size: 10pt;" align="left"><o:p>&nbsp;</o:p></p>
<p style="font-size: 10pt;" align="left">其中root[nsParts[i]] = {};<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">可以改为如下两种中的任何一种</p>
<p style="font-size: 10pt;" align="left">A、&nbsp;&nbsp; root[nsParts[i]] = new Object();<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">B、&nbsp;&nbsp; root[nsParts[i]] = new Function();<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">由于Function 继承自Object，所以两个都可以。<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">// by 3zfp.zeng 2006.03.18<o:p></o:p></p>
<p style="font-size: 10pt;" align="left"><o:p>&nbsp;</o:p></p>
<p style="font-size: 10pt;" align="left">另外一种方法为:<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">if(!window.addNamespace) {<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp; window.addNamespace = function(ns) {<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var nsParts = ns.split(".");<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var root = "window";<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(var i=0; i&lt;nsParts.length; i++) {<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root = root+"."+nsParts[i];<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( eval(" typeof "+ root+"=='undefined'") == true)<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eval(root+"= new Function()");<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp; }<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">}<o:p></o:p></p>
<p style="font-size: 10pt;">4、&nbsp; prototype.js 中对Class 类的理解</p>
<p style="font-size: 10pt;">源代码如下:</p>
<p style="font-size: 10pt;" align="left">var Class = {<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp; create: function() {<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return function() {<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(typeof this.initialize == "function")<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.initialize.apply(this, arguments);<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp; }<o:p></o:p></p>
<p style="font-size: 10pt;">}<o:p></o:p></p>
<p style="font-size: 10pt;">可以改为：<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">var Class = function() //function Class()<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">{<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this.create = &nbsp;function() {<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return function() <o:p></o:p></p>
<p style="font-size: 10pt;" align="left">{<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(typeof this.initialize == "function")<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.initialize.apply(this, arguments);<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp; }<o:p></o:p></p>
<p style="font-size: 10pt;">}<o:p></o:p></p>
<p style="font-size: 10pt;">进一步的改为（在只是声明不带参数的函数/对象是使用）:<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">var Class = function()<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">{<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this.create = &nbsp;function() <o:p></o:p></p>
<p style="font-size: 10pt;" align="left">{<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return new Function();<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<o:p></o:p></p>
<p style="font-size: 10pt;">}<o:p></o:p></p>
<p style="font-size: 10pt;">5、&nbsp; apply 方法&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 通过该方法可以实现函数 重载 功能。</p>
<p style="font-size: 10pt;" align="left"><a name="jsmthapply"></a>应用某一对象的一个方法，用另一个对象替换当前对象。<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">apply([thisObj[,argArray]])<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">参数<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">thisObj<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">可选项。将被用作当前对象的对象。<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">argArray<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">可选项。将被传递给该函数的参数数组。<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">说明<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">如果 argArray 不是一个有效的数组或者不是 arguments 对象，那么将导致一个 TypeError。<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">如果没有提供 argArray 和 thisObj 任何一个参数，那么 Global 对象将被用作 thisObj， 并且无法被传递任何参数。<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp; 例子:<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp; Point2D.prototype.distance = function()&nbsp;&nbsp; <o:p></o:p></p>
<p style="font-size: 10pt;" align="left">{<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (arguments[0] instanceof Point2D) <o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; {<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this._point_distance.apply(this, arguments);<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 含义为:<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">由_point_distance 函数替换distance函数，并将arguments<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 等参数信息复制过去。<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; else if (arguments[0] instanceof Vector2D) <o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this._vector_distance.apply(this, arguments);<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; else<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; {<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new Error("Argument Error!");<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;}<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp; }<o:p></o:p></p>
<p style="font-size: 10pt;">6、&nbsp; 函数内部直接套function和通过this来指代funcion之间的区别</p>
<p style="font-size: 10pt;">var Kinds = function()<o:p></o:p></p>
<p style="font-size: 10pt;">{<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp; function DownA() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //内部私有函数，不能被外部调用。<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp; {<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("is me DownA");<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp; }<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp; function DownB()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //内部私有函数，不能被外部调用。<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp; {<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DownA();<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp; }<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp; this.DownC = function() &nbsp;&nbsp;&nbsp; //该 this 指示 Kinds<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp; {<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.DownCC = function() &nbsp;&nbsp; //该 this 指示 Downc<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new Kinds().DownD();<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DownB();<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Alert(&#8220;is me DownC&#8221;);<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp; }<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp; this.DownD = function() &nbsp;&nbsp;&nbsp; //该 this 指示 Kinds<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp; {<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("is me DownD");<o:p></o:p></p>
<p style="font-size: 10pt;">&nbsp; }<o:p></o:p></p>
<p style="font-size: 10pt;">}<o:p></o:p></p>
<p style="font-size: 10pt;">var t = new Kinds();<o:p></o:p></p>
<p style="font-size: 10pt;">var d = new t.DownC();<o:p></o:p></p>
<p style="font-size: 10pt;">d.DownCC();<o:p></o:p></p>
<p style="font-size: 10pt;">PrintOuts:<o:p></o:p></p>
<p style="font-size: 10pt;">is me DownC<o:p></o:p></p>
<p style="font-size: 10pt;">is me DownD<o:p></o:p></p>
<p style="font-size: 10pt;">is me DownA<o:p></o:p></p>
<p style="font-size: 10pt;">DownB,DownA 等函数只能是通过内部调用来实现。这样就保证了其方法的内部private性。而通过使用 this.FunctionName = function() 来定义的则可以使用&#8221;.&#8221;隔号来实现。 其实这个和类 / 类型作用域 类似.<o:p></o:p></p>
<p style="font-size: 10pt;">7、&nbsp; prototype.js 中 extend 含义：让所有的对象都继承自object对象且复制给Object 并返回。</p>
<p style="font-size: 10pt;">8、&nbsp; AjaxPro 解析过程：</p>
<p style="font-size: 10pt;">A、 定义可以被生成客户端对象的type,也就是将在客户端生成类似如下代码的代码段：</p>
<p style="font-size: 10pt;">AjaxPro.Utility.RegisterTypeForAjax(typeof(Examples.Classes.Demo))；<o:p></o:p></p>
<p style="font-size: 10pt;">该代码会在客户端生成如下js 块<o:p></o:p></p>
<p style="font-size: 10pt;">&lt;script type="text/javascript" src="/AJAXDemo/ajaxpro/AJAXDemo.Examples.Classes.Demo,AJAXDemo.ashx"&gt;&lt;/script&gt;<o:p></o:p></p>
<p style="font-size: 10pt;"><o:p>&nbsp;</o:p></p>
<p style="font-size: 10pt;">B、 而我们恰巧在web.config 文件中定义了 对于ajaxpro/*.ashx 的请求都由AjaxPro.AjaxHandlerFactory, AjaxPro 来处理。这样的话 就可以对与.ashx文件可以response.write 出一段js 代码了。该代码如下:</p>
<p style="font-size: 10pt;"><o:p>&nbsp;</o:p></p>
<p style="font-size: 10pt;" align="left">addNamespace("AJAXDemo.Examples.Classes");<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">AJAXDemo.Examples.Classes.Demo_class = Class.create();<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">AJAXDemo.Examples.Classes.Demo_class.prototype = (<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">new AjaxPro.Request()).extend(<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">{<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp; GetMyClass: function(callback) {<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this.invoke("GetMyClass", {}, callback);<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp; },<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp; GetMyInheritedClass: function(callback) {<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this.invoke("GetMyInheritedClass", {}, callback);<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp; },<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp; PutMyClass: function(c, callback) {<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return this.invoke("PutMyClass", {"c":c}, callback);<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp; },<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp; GetPerson: function(callback) {<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this.invoke("GetPerson", {}, callback);<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp; },<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp; initialize: function() {<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.url = "/AJAXDemo/ajaxpro/AJAXDemo.Examples.Classes.Demo,AJAXDemo.ashx";<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">&nbsp;&nbsp;&nbsp; }<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">}<o:p></o:p></p>
<p style="font-size: 10pt;" align="left">)<o:p></o:p></p>
<p style="font-size: 10pt;">AJAXDemo.Examples.Classes.Demo = <o:p></o:p></p>
<p style="font-size: 10pt;">new AJAXDemo.Examples.Classes.Demo_class();</p>
 
  <img src ="http://www.phpweblog.net/killjin/aggbug/2390.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/killjin/" target="_blank">Prog</a> 2007-11-26 04:05 <a href="http://www.phpweblog.net/killjin/archive/2007/11/26/2390.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JS继承探讨</title><link>http://www.phpweblog.net/killjin/archive/2007/11/26/2389.html</link><dc:creator>Prog</dc:creator><author>Prog</author><pubDate>Sun, 25 Nov 2007 20:04:00 GMT</pubDate><guid>http://www.phpweblog.net/killjin/archive/2007/11/26/2389.html</guid><wfw:comment>http://www.phpweblog.net/killjin/comments/2389.html</wfw:comment><comments>http://www.phpweblog.net/killjin/archive/2007/11/26/2389.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/killjin/comments/commentRss/2389.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/killjin/services/trackbacks/2389.html</trackback:ping><description><![CDATA[ 
   &nbsp;
<p align="center"><strong><span>js</span></strong><strong><span>继承探讨</span></strong></p>
<p><span>每当我们说到</span><span>js</span><span>的继承时，在您的脑袋的第一反应就是</span><span>prototype</span><span>原型机制来实现。但是您是否使用过其他的方法来实现继承呢，或者您是否了解其他</span><span>实现方式及各种不同的继承实现机制的优缺点呢？</span></p>
<p><span>好了，下面我们就来看看几种比较常见的继承实现吧。</span></p>
<p><span style="color: red;"><strong>1、 prototype方式</strong></span></p>
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><span style="color: rgb(0, 128, 128);">&nbsp;1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;BaseClass&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">()<br></span><span style="color: rgb(0, 128, 128);">&nbsp;2</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;3</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_27_157_Open_Image" onclick="this.style.display='none'; Codehighlighter1_27_157_Open_Text.style.display='none'; Codehighlighter1_27_157_Closed_Image.style.display='inline'; Codehighlighter1_27_157_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_27_157_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_27_157_Closed_Text.style.display='none'; Codehighlighter1_27_157_Open_Image.style.display='inline'; Codehighlighter1_27_157_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_27_157_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_27_157_Open_Text"><span style="color: rgb(0, 0, 0);">{<br></span><span style="color: rgb(0, 128, 128);">&nbsp;4</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;5</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.name&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">3zfp</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br></span><span style="color: rgb(0, 128, 128);">&nbsp;6</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;7</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.age&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">100</span><span style="color: rgb(0, 0, 0);">;<br></span><span style="color: rgb(0, 128, 128);">&nbsp;8</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;9</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_106_154_Open_Image" onclick="this.style.display='none'; Codehighlighter1_106_154_Open_Text.style.display='none'; Codehighlighter1_106_154_Closed_Image.style.display='inline'; Codehighlighter1_106_154_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_106_154_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_106_154_Closed_Text.style.display='none'; Codehighlighter1_106_154_Open_Image.style.display='inline'; Codehighlighter1_106_154_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.ToString&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">()</span><span id="Codehighlighter1_106_154_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_106_154_Open_Text"><span style="color: rgb(0, 0, 0);">{<br></span><span style="color: rgb(0, 128, 128);">10</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">11</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.name</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.age;<br></span><span style="color: rgb(0, 128, 128);">12</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">13</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">14</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">15</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">16</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">17</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;Derived&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">()<br></span><span style="color: rgb(0, 128, 128);">18</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">19</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_186_222_Open_Image" onclick="this.style.display='none'; Codehighlighter1_186_222_Open_Text.style.display='none'; Codehighlighter1_186_222_Closed_Image.style.display='inline'; Codehighlighter1_186_222_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_186_222_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_186_222_Closed_Text.style.display='none'; Codehighlighter1_186_222_Open_Image.style.display='inline'; Codehighlighter1_186_222_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_186_222_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_186_222_Open_Text"><span style="color: rgb(0, 0, 0);">{&nbsp;<br></span><span style="color: rgb(0, 128, 128);">20</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">21</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.address&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">ShenZhen</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br></span><span style="color: rgb(0, 128, 128);">22</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">23</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">24</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">25</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Derived.prototype&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;BaseClass();<br></span><span style="color: rgb(0, 128, 128);">26</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">27</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;instance&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Derived();<br></span><span style="color: rgb(0, 128, 128);">28</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">29</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">instance.ToString();<br></span><span style="color: rgb(0, 128, 128);">30</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span></div>
<p>这种方式最为简单，只需要让一个类的<span>prototype</span><span>为被继承的一个实例就</span><span>ok</span><span>，然后直接使用</span><span>BaseClass</span><span>的方法。</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>prototype</span><span>属性是啥意思呢？</span><span>prototype</span><span>即为原型，每一个对象</span><span>(</span><span>由</span><span>function </span><span>定义出来</span><span>)</span><span>都有一个默认的原型属性，该属性是个对象类型。</span><span>并且该默认属性用来实现链的向上攀查。意思就是说，如果某个对象的属性不存在，那个将通过</span><span>prototype</span><span>属性对应的对象的来查找该对象的属性。</span><span>如果</span><span>prototype</span><span>查找不到呢？</span><span> js</span><span>会自动地找</span><span>prototype</span><span>的</span><span>prototype</span><span>属性对应的对象来查找，这样就通过</span><span>prototype</span><span>一直往上索引攀查，直到查找到了</span><span>该属性或者</span><span>prototype</span><span>最后为空</span><span>("undefined");</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>例如：上例中的</span><span>instance.ToString()</span><span>方法。</span><span>js</span><span>会先在</span><span>instance</span><span>实例中查找是否有</span><span>ToString()</span><span>方法，因为没有，所以查找</span><span>Derived.prototype</span><span>属性，</span><span>而</span><span>prototype </span><span>为</span><span> NewClass</span><span>的一个实例，该实例有</span><span>ToString()</span><span>方法，于是调用成功；同样给</span><span>instance </span><span>的</span><span> name </span><span>属性赋值时也是查找</span><span>prototype</span><span>来实现的。</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>注意，每一个对象得</span><span>prototype</span><span>都默认对应一个</span><span>object</span><span>对象，但是该对象不等于</span><span>Object</span><span>；如何验证呢？看如下代码：</span><span></span></p>
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><span style="color: rgb(0, 128, 128);">1</span><img id="Codehighlighter1_27_28_Open_Image" onclick="this.style.display='none'; Codehighlighter1_27_28_Open_Text.style.display='none'; Codehighlighter1_27_28_Closed_Image.style.display='inline'; Codehighlighter1_27_28_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_27_28_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_27_28_Closed_Text.style.display='none'; Codehighlighter1_27_28_Open_Image.style.display='inline'; Codehighlighter1_27_28_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;foo&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">()</span><span id="Codehighlighter1_27_28_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_27_28_Open_Text"><span style="color: rgb(0, 0, 0);">{}</span></span><span style="color: rgb(0, 0, 0);">;<br></span><span style="color: rgb(0, 128, 128);">2</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">3</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;result&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;(foo.prototype</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">Object);</span></div>
<p>这段代码的<span>result </span><span>所得值为</span><span> false;</span></p>
<p><span>以下几个需要注意：</span></p>
<p><span><span></span></span></p>
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><span style="color: rgb(0, 128, 128);">&nbsp;1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">typeof</span><span style="color: rgb(0, 0, 0);">(Object.prototype)&nbsp;</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">object</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br></span><span style="color: rgb(0, 128, 128);">&nbsp;2</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;3</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;<br></span><span style="color: rgb(0, 128, 128);">&nbsp;4</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;5</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">typeof</span><span style="color: rgb(0, 0, 0);">(Object.prototype.prototype)&nbsp;</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">undefined</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br></span><span style="color: rgb(0, 128, 128);">&nbsp;6</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;7</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;<br></span><span style="color: rgb(0, 128, 128);">&nbsp;8</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;9</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;obj&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Object();<br></span><span style="color: rgb(0, 128, 128);">10</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">11</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">typeof</span><span style="color: rgb(0, 0, 0);">(obj.prototype)&nbsp;</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">undefined</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br></span><span style="color: rgb(0, 128, 128);">12</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">13</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: rgb(0, 128, 128);">14</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">15</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_212_213_Open_Image" onclick="this.style.display='none'; Codehighlighter1_212_213_Open_Text.style.display='none'; Codehighlighter1_212_213_Closed_Image.style.display='inline'; Codehighlighter1_212_213_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_212_213_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_212_213_Closed_Text.style.display='none'; Codehighlighter1_212_213_Open_Image.style.display='inline'; Codehighlighter1_212_213_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;obj&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span id="Codehighlighter1_212_213_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_212_213_Open_Text"><span style="color: rgb(0, 0, 0);">{}</span></span><span style="color: rgb(0, 0, 0);">;<br></span><span style="color: rgb(0, 128, 128);">16</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">17</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">typeof</span><span style="color: rgb(0, 0, 0);">(obj.prototype)&nbsp;</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">undefined</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br></span><span style="color: rgb(0, 128, 128);">18</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">19</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;<br></span><span style="color: rgb(0, 128, 128);">20</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">21</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span></div>
<p><strong style="color: red;"><span>2</span><span>、</span><span>apply</span><span>方式</span></strong></p>
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><span style="color: rgb(0, 128, 128);">&nbsp;1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;BaseClass&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">()<br></span><span style="color: rgb(0, 128, 128);">&nbsp;2</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;3</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_27_157_Open_Image" onclick="this.style.display='none'; Codehighlighter1_27_157_Open_Text.style.display='none'; Codehighlighter1_27_157_Closed_Image.style.display='inline'; Codehighlighter1_27_157_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_27_157_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_27_157_Closed_Text.style.display='none'; Codehighlighter1_27_157_Open_Image.style.display='inline'; Codehighlighter1_27_157_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_27_157_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_27_157_Open_Text"><span style="color: rgb(0, 0, 0);">{<br></span><span style="color: rgb(0, 128, 128);">&nbsp;4</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;5</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.name&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">3zfp</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br></span><span style="color: rgb(0, 128, 128);">&nbsp;6</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;7</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.age&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">100</span><span style="color: rgb(0, 0, 0);">;<br></span><span style="color: rgb(0, 128, 128);">&nbsp;8</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;9</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_106_154_Open_Image" onclick="this.style.display='none'; Codehighlighter1_106_154_Open_Text.style.display='none'; Codehighlighter1_106_154_Closed_Image.style.display='inline'; Codehighlighter1_106_154_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_106_154_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_106_154_Closed_Text.style.display='none'; Codehighlighter1_106_154_Open_Image.style.display='inline'; Codehighlighter1_106_154_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.ToString&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">()</span><span id="Codehighlighter1_106_154_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_106_154_Open_Text"><span style="color: rgb(0, 0, 0);">{<br></span><span style="color: rgb(0, 128, 128);">10</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">11</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.name</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.age;<br></span><span style="color: rgb(0, 128, 128);">12</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">13</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">14</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">15</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">16</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">17</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;Derived&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">()<br></span><span style="color: rgb(0, 128, 128);">18</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">19</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_186_265_Open_Image" onclick="this.style.display='none'; Codehighlighter1_186_265_Open_Text.style.display='none'; Codehighlighter1_186_265_Closed_Image.style.display='inline'; Codehighlighter1_186_265_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_186_265_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_186_265_Closed_Text.style.display='none'; Codehighlighter1_186_265_Open_Image.style.display='inline'; Codehighlighter1_186_265_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_186_265_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_186_265_Open_Text"><span style="color: rgb(0, 0, 0);">{&nbsp;<br></span><span style="color: rgb(0, 128, 128);">20</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">21</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BaseClass.apply(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Array());<br></span><span style="color: rgb(0, 128, 128);">22</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">23</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.address&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">ShenZhen</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br></span><span style="color: rgb(0, 128, 128);">24</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">25</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">26</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">27</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;instance&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Derived();<br></span><span style="color: rgb(0, 128, 128);">28</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">29</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">instance.ToString();<br></span><span style="color: rgb(0, 128, 128);">30</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">31</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;<br></span><span style="color: rgb(0, 128, 128);">32</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span></div>
<p><span>在这种方式下，我们最需要理解的就是</span><span>apply</span><span>函数的作用。</span></p>
<p><span>该方法普遍的解释为用</span><span>A</span><span>方法去替换</span><span>B</span><span>方法。第一个参数为</span><span>B</span><span>方法的对象本身，第二个参数为一个数组，该数组内的值集合为需要传递给</span><span>A</span><span>方法对应的</span><span>参数列表，如果参数为空，即没有参数传递，则通过</span><span> new Array() </span><span>来传递，</span><span>null</span><span>无效。</span></p>
<p><span>一般的方式为：</span></p>
<p>
</p><p><span></span></p>
<span>但是在本例当中，</span><span>apply</span><span>方法执行了两步操作。</span>
<p>&nbsp;<span><strong style="color: red;">第一</strong>：将</span><span>BaseClass</span><span>以</span><span>apply</span><span>传递的</span><span>Array</span><span>数组作为初始化参数进行实例化。</span></p>
<p><span><strong style="color: red;">第二</strong>：将新生成的实例对象的所有属性（</span><span>name</span><span>，</span><span>age</span><span>，</span><span>ToString</span><span>方法）复制到</span><span> instance</span><span>实例对象。</span><span>这样就实现了继承。</span></p>
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><span style="color: rgb(0, 128, 128);">&nbsp;1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;foo&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">()<br></span><span style="color: rgb(0, 128, 128);">&nbsp;2</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;3</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_22_204_Open_Image" onclick="this.style.display='none'; Codehighlighter1_22_204_Open_Text.style.display='none'; Codehighlighter1_22_204_Closed_Image.style.display='inline'; Codehighlighter1_22_204_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_22_204_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_22_204_Closed_Text.style.display='none'; Codehighlighter1_22_204_Open_Image.style.display='inline'; Codehighlighter1_22_204_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_22_204_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_22_204_Open_Text"><span style="color: rgb(0, 0, 0);">{<br></span><span style="color: rgb(0, 128, 128);">&nbsp;4</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;5</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_54_121_Open_Image" onclick="this.style.display='none'; Codehighlighter1_54_121_Open_Text.style.display='none'; Codehighlighter1_54_121_Closed_Image.style.display='inline'; Codehighlighter1_54_121_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_54_121_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_54_121_Closed_Text.style.display='none'; Codehighlighter1_54_121_Open_Image.style.display='inline'; Codehighlighter1_54_121_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.fooA&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">()</span><span id="Codehighlighter1_54_121_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_54_121_Open_Text"><span style="color: rgb(0, 0, 0);">{<br></span><span style="color: rgb(0, 128, 128);">&nbsp;6</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;7</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.fooB.apply(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Array(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">sorry</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">));<br></span><span style="color: rgb(0, 128, 128);">&nbsp;8</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;9</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">10</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">11</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.fooB&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">(str)<br></span><span style="color: rgb(0, 128, 128);">12</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">13</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_164_201_Open_Image" onclick="this.style.display='none'; Codehighlighter1_164_201_Open_Text.style.display='none'; Codehighlighter1_164_201_Closed_Image.style.display='inline'; Codehighlighter1_164_201_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_164_201_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_164_201_Closed_Text.style.display='none'; Codehighlighter1_164_201_Open_Image.style.display='inline'; Codehighlighter1_164_201_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_164_201_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_164_201_Open_Text"><span style="color: rgb(0, 0, 0);">{<br></span><span style="color: rgb(0, 128, 128);">14</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">15</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(str);<br></span><span style="color: rgb(0, 128, 128);">16</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">17</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">18</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">19</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">20</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">21</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;foo().fooA();<br></span><span style="color: rgb(0, 128, 128);">22</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span></div>
<p>&nbsp;<span>3</span><span>、</span><span>call+prototype </span><span>方式</span></p>
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><span style="color: rgb(0, 128, 128);">&nbsp;1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;BaseClass&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">(name,age)<br></span><span style="color: rgb(0, 128, 128);">&nbsp;2</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;3</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_35_163_Open_Image" onclick="this.style.display='none'; Codehighlighter1_35_163_Open_Text.style.display='none'; Codehighlighter1_35_163_Closed_Image.style.display='inline'; Codehighlighter1_35_163_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_35_163_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_35_163_Closed_Text.style.display='none'; Codehighlighter1_35_163_Open_Image.style.display='inline'; Codehighlighter1_35_163_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_35_163_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_35_163_Open_Text"><span style="color: rgb(0, 0, 0);">{<br></span><span style="color: rgb(0, 128, 128);">&nbsp;4</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;5</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.name&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;name;<br></span><span style="color: rgb(0, 128, 128);">&nbsp;6</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;7</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.age&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;age;<br></span><span style="color: rgb(0, 128, 128);">&nbsp;8</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;9</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_112_160_Open_Image" onclick="this.style.display='none'; Codehighlighter1_112_160_Open_Text.style.display='none'; Codehighlighter1_112_160_Closed_Image.style.display='inline'; Codehighlighter1_112_160_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_112_160_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_112_160_Closed_Text.style.display='none'; Codehighlighter1_112_160_Open_Image.style.display='inline'; Codehighlighter1_112_160_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.ToString&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">()</span><span id="Codehighlighter1_112_160_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_112_160_Open_Text"><span style="color: rgb(0, 0, 0);">{<br></span><span style="color: rgb(0, 128, 128);">10</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">11</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.name</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.age;<br></span><span style="color: rgb(0, 128, 128);">12</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">13</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">14</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">15</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">16</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">17</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;Derived&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">()<br></span><span style="color: rgb(0, 128, 128);">18</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">19</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_192_269_Open_Image" onclick="this.style.display='none'; Codehighlighter1_192_269_Open_Text.style.display='none'; Codehighlighter1_192_269_Closed_Image.style.display='inline'; Codehighlighter1_192_269_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_192_269_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_192_269_Closed_Text.style.display='none'; Codehighlighter1_192_269_Open_Image.style.display='inline'; Codehighlighter1_192_269_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_192_269_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_192_269_Open_Text"><span style="color: rgb(0, 0, 0);">{&nbsp;<br></span><span style="color: rgb(0, 128, 128);">20</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">21</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BaseClass.call(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">3zfp</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">100</span><span style="color: rgb(0, 0, 0);">);<br></span><span style="color: rgb(0, 128, 128);">22</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">23</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.address&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">ShenZhen</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br></span><span style="color: rgb(0, 128, 128);">24</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">25</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">26</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">27</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Derived.prototype&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;BaseClass();<br></span><span style="color: rgb(0, 128, 128);">28</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">29</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;instance&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Derived();<br></span><span style="color: rgb(0, 128, 128);">30</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">31</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">instance.ToString();<br></span><span style="color: rgb(0, 128, 128);">32</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">33</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span>其实，</span><span>call</span><span>函数和</span><span>apply</span><span>方式有很类似的作用，都是用</span><span>A</span><span>方法去替换</span><span>B</span><span>方法，但是参数传递不一样，</span><span>call</span><span>方法的第一个参数为</span><span>B</span><span>方法的对象本身，和面的参数列不用</span><span>Array</span><span>对象包装，直接依次传递就可以。</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;为什么作用类似，</span><span>call</span><span>方式的实现机制却要多一条</span><span> Derived.prototype = new BaseClass(); </span><span>语句呢？那是因为</span><span>call</span><span>方法只实现了方法的替换而没有作对象属性的复制操作。</span></p>
<p><span>call</span><span>方法实际上是做了如下几个操作：</span></p>
<p><span>例：</span></p>
<p><span></span></p>
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><span style="color: rgb(0, 128, 128);">&nbsp;1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;foo&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">()<br></span><span style="color: rgb(0, 128, 128);">&nbsp;2</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;3</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_22_192_Open_Image" onclick="this.style.display='none'; Codehighlighter1_22_192_Open_Text.style.display='none'; Codehighlighter1_22_192_Closed_Image.style.display='inline'; Codehighlighter1_22_192_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_22_192_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_22_192_Closed_Text.style.display='none'; Codehighlighter1_22_192_Open_Image.style.display='inline'; Codehighlighter1_22_192_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_22_192_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_22_192_Open_Text"><span style="color: rgb(0, 0, 0);">{<br></span><span style="color: rgb(0, 128, 128);">&nbsp;4</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;5</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_54_109_Open_Image" onclick="this.style.display='none'; Codehighlighter1_54_109_Open_Text.style.display='none'; Codehighlighter1_54_109_Closed_Image.style.display='inline'; Codehighlighter1_54_109_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_54_109_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_54_109_Closed_Text.style.display='none'; Codehighlighter1_54_109_Open_Image.style.display='inline'; Codehighlighter1_54_109_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.fooA&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">()</span><span id="Codehighlighter1_54_109_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_54_109_Open_Text"><span style="color: rgb(0, 0, 0);">{<br></span><span style="color: rgb(0, 128, 128);">&nbsp;6</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;7</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.fooB.call(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">sorry</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br></span><span style="color: rgb(0, 128, 128);">&nbsp;8</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;9</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">10</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">11</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.fooB&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">(str)<br></span><span style="color: rgb(0, 128, 128);">12</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">13</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_152_189_Open_Image" onclick="this.style.display='none'; Codehighlighter1_152_189_Open_Text.style.display='none'; Codehighlighter1_152_189_Closed_Image.style.display='inline'; Codehighlighter1_152_189_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_152_189_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_152_189_Closed_Text.style.display='none'; Codehighlighter1_152_189_Open_Image.style.display='inline'; Codehighlighter1_152_189_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_152_189_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_152_189_Open_Text"><span style="color: rgb(0, 0, 0);">{<br></span><span style="color: rgb(0, 128, 128);">14</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">15</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(str);<br></span><span style="color: rgb(0, 128, 128);">16</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">17</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">18</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">19</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">20</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">21</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;foo().fooA();<br></span><span style="color: rgb(0, 128, 128);">22</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">23</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span></div>
<p>则<span> this.fooB.call(this,"sorry")</span><span>执行了如下几个操作：</span><span></span></p>
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><span style="color: rgb(0, 128, 128);">1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.temp&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.fooB;<br></span><span style="color: rgb(0, 128, 128);">2</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">3</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.temp(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">sorry</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br></span><span style="color: rgb(0, 128, 128);">4</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">5</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 255);">delete</span><span style="color: rgb(0, 0, 0);">&nbsp;(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.temp);<br></span><span style="color: rgb(0, 128, 128);">6</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span></div>
<p>其实，<span>google Map API </span><span>的继承就是使用这种方式。大家可以下载的参考参考</span><span>(maps.google.com)</span><span>。</span></p>
<p><span>4</span><span>、</span><span>prototype.js</span><span>中的实现方式</span></p>
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><span style="color: rgb(0, 128, 128);">&nbsp;1</span><img id="Codehighlighter1_46_157_Open_Image" onclick="this.style.display='none'; Codehighlighter1_46_157_Open_Text.style.display='none'; Codehighlighter1_46_157_Closed_Image.style.display='inline'; Codehighlighter1_46_157_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_46_157_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_46_157_Closed_Text.style.display='none'; Codehighlighter1_46_157_Open_Image.style.display='inline'; Codehighlighter1_46_157_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"><span style="color: rgb(0, 0, 0);">Object.extend&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">(destination,&nbsp;source)&nbsp;</span><span id="Codehighlighter1_46_157_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_46_157_Open_Text"><span style="color: rgb(0, 0, 0);">{<br></span><span style="color: rgb(0, 128, 128);">&nbsp;2</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;3</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_75_126_Open_Image" onclick="this.style.display='none'; Codehighlighter1_75_126_Open_Text.style.display='none'; Codehighlighter1_75_126_Closed_Image.style.display='inline'; Codehighlighter1_75_126_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_75_126_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_75_126_Closed_Text.style.display='none'; Codehighlighter1_75_126_Open_Image.style.display='inline'; Codehighlighter1_75_126_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;</span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">&nbsp;(property&nbsp;</span><span style="color: rgb(0, 0, 255);">in</span><span style="color: rgb(0, 0, 0);">&nbsp;source)&nbsp;</span><span id="Codehighlighter1_75_126_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_75_126_Open_Text"><span style="color: rgb(0, 0, 0);">{<br></span><span style="color: rgb(0, 128, 128);">&nbsp;4</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;5</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;destination[property]&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;source[property];<br></span><span style="color: rgb(0, 128, 128);">&nbsp;6</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;7</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">&nbsp;}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;8</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;9</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;destination;<br></span><span style="color: rgb(0, 128, 128);">10</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">11</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">12</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">13</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_193_339_Open_Image" onclick="this.style.display='none'; Codehighlighter1_193_339_Open_Text.style.display='none'; Codehighlighter1_193_339_Closed_Image.style.display='inline'; Codehighlighter1_193_339_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_193_339_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_193_339_Closed_Text.style.display='none'; Codehighlighter1_193_339_Open_Image.style.display='inline'; Codehighlighter1_193_339_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;BaseClass&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">(name,age)</span><span id="Codehighlighter1_193_339_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_193_339_Open_Text"><span style="color: rgb(0, 0, 0);">{<br></span><span style="color: rgb(0, 128, 128);">14</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">15</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.name&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;name;<br></span><span style="color: rgb(0, 128, 128);">16</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">17</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.age&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;age;<br></span><span style="color: rgb(0, 128, 128);">18</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">19</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_279_336_Open_Image" onclick="this.style.display='none'; Codehighlighter1_279_336_Open_Text.style.display='none'; Codehighlighter1_279_336_Closed_Image.style.display='inline'; Codehighlighter1_279_336_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_279_336_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_279_336_Closed_Text.style.display='none'; Codehighlighter1_279_336_Open_Image.style.display='inline'; Codehighlighter1_279_336_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.ToString&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">()</span><span id="Codehighlighter1_279_336_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_279_336_Open_Text"><span style="color: rgb(0, 0, 0);">{<br></span><span style="color: rgb(0, 128, 128);">20</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">21</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.name</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.age;<br></span><span style="color: rgb(0, 128, 128);">22</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">23</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">24</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">25</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">26</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">27</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;Derived&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">()<br></span><span style="color: rgb(0, 128, 128);">28</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">29</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_367_613_Open_Image" onclick="this.style.display='none'; Codehighlighter1_367_613_Open_Text.style.display='none'; Codehighlighter1_367_613_Closed_Image.style.display='inline'; Codehighlighter1_367_613_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_367_613_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_367_613_Closed_Text.style.display='none'; Codehighlighter1_367_613_Open_Image.style.display='inline'; Codehighlighter1_367_613_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_367_613_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_367_613_Open_Text"><span style="color: rgb(0, 0, 0);">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: rgb(0, 128, 128);">30</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">31</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BaseClass.call(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">foo</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">100</span><span style="color: rgb(0, 0, 0);">);<br></span><span style="color: rgb(0, 128, 128);">32</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">33</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.address&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">singapore</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br></span><span style="color: rgb(0, 128, 128);">34</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">35</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_484_610_Open_Image" onclick="this.style.display='none'; Codehighlighter1_484_610_Open_Text.style.display='none'; Codehighlighter1_484_610_Closed_Image.style.display='inline'; Codehighlighter1_484_610_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_484_610_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_484_610_Closed_Text.style.display='none'; Codehighlighter1_484_610_Open_Image.style.display='inline'; Codehighlighter1_484_610_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.ToString&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">()</span><span id="Codehighlighter1_484_610_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_484_610_Open_Text"><span style="color: rgb(0, 0, 0);">{<br></span><span style="color: rgb(0, 128, 128);">36</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">37</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;string&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;Derived.prototype.ToString.call(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">);<br></span><span style="color: rgb(0, 128, 128);">38</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">39</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;string&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.address;<br></span><span style="color: rgb(0, 128, 128);">40</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">41</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">42</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">43</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">44</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">45</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Object.extend(Derived.prototype,</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;BaseClass());<br></span><span style="color: rgb(0, 128, 128);">46</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">47</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;instance&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Derived();<br></span><span style="color: rgb(0, 128, 128);">48</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">49</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">document.write(instance.ToString());</span></div>
<p><span>该方式，实际上是显式的利用了</span><span>apply</span><span>的原理来实现继承。先</span><span> var temp = new BaseClass()</span><span>，再将</span><span> temp </span><span>的属性遍历复制到</span><span>Derived.prototype</span><span>中。</span><span>for (property in source) </span><span>表示遍历某个对象的所有属性。但是私有属性无法遍历。</span><span>例</span><span>:</span></p>
<p><span></span></p>
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><span style="color: rgb(0, 128, 128);">&nbsp;1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;foo&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">()<br></span><span style="color: rgb(0, 128, 128);">&nbsp;2</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;3</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_22_195_Open_Image" onclick="this.style.display='none'; Codehighlighter1_22_195_Open_Text.style.display='none'; Codehighlighter1_22_195_Closed_Image.style.display='inline'; Codehighlighter1_22_195_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_22_195_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_22_195_Closed_Text.style.display='none'; Codehighlighter1_22_195_Open_Image.style.display='inline'; Codehighlighter1_22_195_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_22_195_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_22_195_Open_Text"><span style="color: rgb(0, 0, 0);">{<br></span><span style="color: rgb(0, 128, 128);">&nbsp;4</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;5</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;innerString&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">""</span><span style="color: rgb(0, 0, 0);">;<br></span><span style="color: rgb(0, 128, 128);">&nbsp;6</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;7</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.name&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">3zfp</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br></span><span style="color: rgb(0, 128, 128);">&nbsp;8</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;9</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.age&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">100</span><span style="color: rgb(0, 0, 0);">;<br></span><span style="color: rgb(0, 128, 128);">10</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">11</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">&nbsp;innerToString()<br></span><span style="color: rgb(0, 128, 128);">12</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">13</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_147_192_Open_Image" onclick="this.style.display='none'; Codehighlighter1_147_192_Open_Text.style.display='none'; Codehighlighter1_147_192_Closed_Image.style.display='inline'; Codehighlighter1_147_192_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_147_192_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_147_192_Closed_Text.style.display='none'; Codehighlighter1_147_192_Open_Image.style.display='inline'; Codehighlighter1_147_192_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_147_192_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_147_192_Open_Text"><span style="color: rgb(0, 0, 0);">{<br></span><span style="color: rgb(0, 128, 128);">14</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">15</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;innerString;<br></span><span style="color: rgb(0, 128, 128);">16</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">17</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">18</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">19</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">20</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">21</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;f&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;foo();<br></span><span style="color: rgb(0, 128, 128);">22</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">23</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;eles&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">""</span><span style="color: rgb(0, 0, 0);">;<br></span><span style="color: rgb(0, 128, 128);">24</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">25</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">&nbsp;(property&nbsp;</span><span style="color: rgb(0, 0, 255);">in</span><span style="color: rgb(0, 0, 0);">&nbsp;f)<br></span><span style="color: rgb(0, 128, 128);">26</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">27</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_254_285_Open_Image" onclick="this.style.display='none'; Codehighlighter1_254_285_Open_Text.style.display='none'; Codehighlighter1_254_285_Closed_Image.style.display='inline'; Codehighlighter1_254_285_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_254_285_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_254_285_Closed_Text.style.display='none'; Codehighlighter1_254_285_Open_Image.style.display='inline'; Codehighlighter1_254_285_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_254_285_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_254_285_Open_Text"><span style="color: rgb(0, 0, 0);">{<br></span><span style="color: rgb(0, 128, 128);">28</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">29</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eles</span><span style="color: rgb(0, 0, 0);">+=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">property;<br></span><span style="color: rgb(0, 128, 128);">30</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">31</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">32</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">33</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">document.write(eles);&nbsp;<br></span><span style="color: rgb(0, 128, 128);">34</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">35</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span></div>
<p>输出为<span> "name age"</span><span>而没有</span><span>"innerString" </span><span>和</span><span> "innerToString()";</span><span>具体原理，以后有机会可以解释（包括私有变量，私有函数，私有函数的变量可</span><span>访问性等等）。</span><span>上面总结了种种继承方式的实现。但是每种方法都有其优缺点。</span></p>
<p><span>第一种方式，如何实现如下需求，需要显示</span><span> "3zfp__100";</span><span></span></p>
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><span style="color: rgb(0, 128, 128);">&nbsp;1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;BaseClass&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">(name,age)<br></span><span style="color: rgb(0, 128, 128);">&nbsp;2</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;3</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_35_163_Open_Image" onclick="this.style.display='none'; Codehighlighter1_35_163_Open_Text.style.display='none'; Codehighlighter1_35_163_Closed_Image.style.display='inline'; Codehighlighter1_35_163_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_35_163_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_35_163_Closed_Text.style.display='none'; Codehighlighter1_35_163_Open_Image.style.display='inline'; Codehighlighter1_35_163_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_35_163_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_35_163_Open_Text"><span style="color: rgb(0, 0, 0);">{<br></span><span style="color: rgb(0, 128, 128);">&nbsp;4</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;5</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.name&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;name;<br></span><span style="color: rgb(0, 128, 128);">&nbsp;6</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;7</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.age&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;age;<br></span><span style="color: rgb(0, 128, 128);">&nbsp;8</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;9</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_112_160_Open_Image" onclick="this.style.display='none'; Codehighlighter1_112_160_Open_Text.style.display='none'; Codehighlighter1_112_160_Closed_Image.style.display='inline'; Codehighlighter1_112_160_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_112_160_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_112_160_Closed_Text.style.display='none'; Codehighlighter1_112_160_Open_Image.style.display='inline'; Codehighlighter1_112_160_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.ToString&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">()</span><span id="Codehighlighter1_112_160_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_112_160_Open_Text"><span style="color: rgb(0, 0, 0);">{<br></span><span style="color: rgb(0, 128, 128);">10</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">11</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.name</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.age;<br></span><span style="color: rgb(0, 128, 128);">12</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">13</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">14</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">15</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">16</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">17</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;Derived&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">(name,age)<br></span><span style="color: rgb(0, 128, 128);">18</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">19</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_200_236_Open_Image" onclick="this.style.display='none'; Codehighlighter1_200_236_Open_Text.style.display='none'; Codehighlighter1_200_236_Closed_Image.style.display='inline'; Codehighlighter1_200_236_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_200_236_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_200_236_Closed_Text.style.display='none'; Codehighlighter1_200_236_Open_Image.style.display='inline'; Codehighlighter1_200_236_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_200_236_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_200_236_Open_Text"><span style="color: rgb(0, 0, 0);">{&nbsp;<br></span><span style="color: rgb(0, 128, 128);">20</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">21</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.address&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">ShenZhen</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br></span><span style="color: rgb(0, 128, 128);">22</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">23</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">24</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">25</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Derived.prototype&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;BaseClass();<br></span><span style="color: rgb(0, 128, 128);">26</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">27</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;instance&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Derived(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">3zfp</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">100</span><span style="color: rgb(0, 0, 0);">);<br></span><span style="color: rgb(0, 128, 128);">28</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">29</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">document.write(instance.ToString());<br></span><span style="color: rgb(0, 128, 128);">30</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">31</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span></div>
<p>我们通过运行可以发现，实际上输出的是<span> "undefined__undefined"</span><span>。也就是说</span><span>name</span><span>和</span><span>age</span><span>没有被赋值。</span></p>
<p><span>oh,my god!</span><span>天无绝人之路。第二和第三种方法可以实现，具体如下：</span></p>
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><span style="color: rgb(0, 128, 128);">&nbsp;1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;BaseClass&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">(name,age)<br></span><span style="color: rgb(0, 128, 128);">&nbsp;2</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;3</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_35_163_Open_Image" onclick="this.style.display='none'; Codehighlighter1_35_163_Open_Text.style.display='none'; Codehighlighter1_35_163_Closed_Image.style.display='inline'; Codehighlighter1_35_163_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_35_163_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_35_163_Closed_Text.style.display='none'; Codehighlighter1_35_163_Open_Image.style.display='inline'; Codehighlighter1_35_163_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_35_163_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_35_163_Open_Text"><span style="color: rgb(0, 0, 0);">{<br></span><span style="color: rgb(0, 128, 128);">&nbsp;4</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;5</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.name&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;name;<br></span><span style="color: rgb(0, 128, 128);">&nbsp;6</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;7</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.age&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;age;<br></span><span style="color: rgb(0, 128, 128);">&nbsp;8</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">&nbsp;9</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_112_160_Open_Image" onclick="this.style.display='none'; Codehighlighter1_112_160_Open_Text.style.display='none'; Codehighlighter1_112_160_Closed_Image.style.display='inline'; Codehighlighter1_112_160_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_112_160_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_112_160_Closed_Text.style.display='none'; Codehighlighter1_112_160_Open_Image.style.display='inline'; Codehighlighter1_112_160_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.ToString&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">()</span><span id="Codehighlighter1_112_160_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_112_160_Open_Text"><span style="color: rgb(0, 0, 0);">{<br></span><span style="color: rgb(0, 128, 128);">10</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">11</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.name</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.age;<br></span><span style="color: rgb(0, 128, 128);">12</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">13</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">14</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">15</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">16</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">17</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;Derived&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">(name,age)<br></span><span style="color: rgb(0, 128, 128);">18</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">19</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_200_287_Open_Image" onclick="this.style.display='none'; Codehighlighter1_200_287_Open_Text.style.display='none'; Codehighlighter1_200_287_Closed_Image.style.display='inline'; Codehighlighter1_200_287_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_200_287_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_200_287_Closed_Text.style.display='none'; Codehighlighter1_200_287_Open_Image.style.display='inline'; Codehighlighter1_200_287_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_200_287_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_200_287_Open_Text"><span style="color: rgb(0, 0, 0);">{&nbsp;<br></span><span style="color: rgb(0, 128, 128);">20</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">21</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BaseClass.apply(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Array(name,age));<br></span><span style="color: rgb(0, 128, 128);">22</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">23</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.address&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">ShenZhen</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br></span><span style="color: rgb(0, 128, 128);">24</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">25</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">26</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">27</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;instance&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Derived(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">3zfp</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">100</span><span style="color: rgb(0, 0, 0);">);<br></span><span style="color: rgb(0, 128, 128);">28</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">29</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">document.write(instance.ToString());<br></span><span style="color: rgb(0, 128, 128);">30</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">31</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">______________________________________________<br></span><span style="color: rgb(0, 128, 128);">32</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">33</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 0);">---------------------------------------------------------------------</span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">34</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">35</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;BaseClass&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">(name,age)<br></span><span style="color: rgb(0, 128, 128);">36</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">37</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_523_651_Open_Image" onclick="this.style.display='none'; Codehighlighter1_523_651_Open_Text.style.display='none'; Codehighlighter1_523_651_Closed_Image.style.display='inline'; Codehighlighter1_523_651_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_523_651_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_523_651_Closed_Text.style.display='none'; Codehighlighter1_523_651_Open_Image.style.display='inline'; Codehighlighter1_523_651_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_523_651_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_523_651_Open_Text"><span style="color: rgb(0, 0, 0);">{<br></span><span style="color: rgb(0, 128, 128);">38</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">39</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.name&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;name;<br></span><span style="color: rgb(0, 128, 128);">40</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">41</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.age&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;age;<br></span><span style="color: rgb(0, 128, 128);">42</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">43</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_600_648_Open_Image" onclick="this.style.display='none'; Codehighlighter1_600_648_Open_Text.style.display='none'; Codehighlighter1_600_648_Closed_Image.style.display='inline'; Codehighlighter1_600_648_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_600_648_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_600_648_Closed_Text.style.display='none'; Codehighlighter1_600_648_Open_Image.style.display='inline'; Codehighlighter1_600_648_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.ToString&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">()</span><span id="Codehighlighter1_600_648_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_600_648_Open_Text"><span style="color: rgb(0, 0, 0);">{<br></span><span style="color: rgb(0, 128, 128);">44</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">45</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.name</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.age;<br></span><span style="color: rgb(0, 128, 128);">46</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">47</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">48</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">49</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">50</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">51</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;Derived&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">(name,age)<br></span><span style="color: rgb(0, 128, 128);">52</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">53</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_688_763_Open_Image" onclick="this.style.display='none'; Codehighlighter1_688_763_Open_Text.style.display='none'; Codehighlighter1_688_763_Closed_Image.style.display='inline'; Codehighlighter1_688_763_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_688_763_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_688_763_Closed_Text.style.display='none'; Codehighlighter1_688_763_Open_Image.style.display='inline'; Codehighlighter1_688_763_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_688_763_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_688_763_Open_Text"><span style="color: rgb(0, 0, 0);">{&nbsp;<br></span><span style="color: rgb(0, 128, 128);">54</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">55</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BaseClass.call(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">,name,age);<br></span><span style="color: rgb(0, 128, 128);">56</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">57</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.address&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">ShenZhen</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br></span><span style="color: rgb(0, 128, 128);">58</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">59</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="color: rgb(0, 0, 0);"><br></span><span style="color: rgb(0, 128, 128);">60</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">61</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Derived.prototype&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;BaseClass();<br></span><span style="color: rgb(0, 128, 128);">62</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">63</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;instance&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Derived(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">3zfp</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0);">100</span><span style="color: rgb(0, 0, 0);">);<br></span><span style="color: rgb(0, 128, 128);">64</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">65</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;<br></span><span style="color: rgb(0, 128, 128);">66</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">67</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">document.write(instance.ToString());<br></span><span style="color: rgb(0, 128, 128);">68</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br></span><span style="color: rgb(0, 128, 128);">69</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;<br></span><span style="color: rgb(0, 128, 128);">70</span><span style="color: rgb(0, 0, 0);"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span></div>
<p>&nbsp;<span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>但是用</span><span>apply</span><span>方法也还是有缺点的，为什么？在</span><span>js</span><span>中，我们有个非常重要的运算符就是</span><span>"instanceof"</span><span>，该运算符用来比较某个对向是否为某种类型。</span><span>对于继承，我们除了是属于</span><span> Derived</span><span>类型，也应该是</span><span>BaseClass</span><span>类型，但是。</span><span>apply</span><span>方式返回值为</span><span>false(</span><span>(instance instanceof BaseClass) == false).</span><span>由于</span><span>prototype.js</span><span>使用了类似</span><span>apply</span><span>的方式，所以也会出现这个问题。</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>啊，终极方法就是</span><span> call+prototype</span><span>方式了，还是</span><span>google</span><span>牛</span><span>X</span><span>。您可以试一下是否正确</span><span>((instance instanceof BaseClass) == true)</span><span>。</span></p>
<p>&nbsp;<span>最后，就是多重继承了，由于</span><span>js</span><span>中</span><span>prototype</span><span>只能对应一个对象，因此无法实现真正意义上的多重继承。有一个</span><span>js</span><span>库模拟了多重继承，</span><span>但是该库也额外重写了</span><span> instanceOf </span><span>方法，用</span><span> _instanceOf</span><span>和</span><span>_subclassOf </span><span>函数来模拟判断。该库的名字叫</span><span>modello.js</span><span>，感兴趣的可以搜索下载。</span></p>
<p><span style="color: rgb(0, 0, 128);"><strong>以上为本人的一些个人见解，希望对您有帮助。</strong></span></p>
 
   <img src ="http://www.phpweblog.net/killjin/aggbug/2389.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/killjin/" target="_blank">Prog</a> 2007-11-26 04:04 <a href="http://www.phpweblog.net/killjin/archive/2007/11/26/2389.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>js变量作用域及可访问性的探讨</title><link>http://www.phpweblog.net/killjin/archive/2007/11/26/2388.html</link><dc:creator>Prog</dc:creator><author>Prog</author><pubDate>Sun, 25 Nov 2007 20:02:00 GMT</pubDate><guid>http://www.phpweblog.net/killjin/archive/2007/11/26/2388.html</guid><wfw:comment>http://www.phpweblog.net/killjin/comments/2388.html</wfw:comment><comments>http://www.phpweblog.net/killjin/archive/2007/11/26/2388.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/killjin/comments/commentRss/2388.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/killjin/services/trackbacks/2388.html</trackback:ping><description><![CDATA[<p>每一种语言都有变量的概念，变量是用来存储信息的一个元素。比如下面这个函数：</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;Student(name,age,from)<br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img id=Codehighlighter1_32_211_Open_Image onclick="this.style.display='none'; Codehighlighter1_32_211_Open_Text.style.display='none'; Codehighlighter1_32_211_Closed_Image.style.display='inline'; Codehighlighter1_32_211_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_32_211_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_32_211_Closed_Text.style.display='none'; Codehighlighter1_32_211_Open_Image.style.display='inline'; Codehighlighter1_32_211_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_32_211_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_32_211_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.name&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;name;<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.age&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;age;<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.from&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;from;<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.ToString&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img id=Codehighlighter1_118_209_Open_Image onclick="this.style.display='none'; Codehighlighter1_118_209_Open_Text.style.display='none'; Codehighlighter1_118_209_Closed_Image.style.display='inline'; Codehighlighter1_118_209_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_118_209_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_118_209_Closed_Text.style.display='none'; Codehighlighter1_118_209_Open_Image.style.display='inline'; Codehighlighter1_118_209_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;</span><span id=Codehighlighter1_118_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.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_118_209_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">my&nbsp;information&nbsp;is&nbsp;name:&nbsp;</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">,age&nbsp;:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.age</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;from&nbsp;:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.from;<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<p>&nbsp;&nbsp;&nbsp;Student类有三个变量，分别为name（名字）,age（年龄）,from（籍贯），这三个变量构成了描述一个对象的信息。当然，这里还有一个方法用来返回Student的信息。<br>&nbsp;&nbsp;&nbsp;但是，我们是不是定义了一个变量，它就能一直存在着，并且还有可能在任何地方都能被访问和使用直到其被销毁？仔细想想，上面的需求是比较过分的，因为某些变量在某个功能实现后就不再利用了，但如果这个变量还存在的话，就占用了系统资源了，俗语曰：&#8220;站着茅坑不拉<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#42;&#64;&#35;&#36;&#37;">#$%</a>&#8221;。<br>&nbsp;&nbsp;&nbsp;于是我们对变量的及时和按需求地销毁有一个探讨的话题了。<br>&nbsp;&nbsp;&nbsp;好，切入正题吧，就本人所接触过的来讲，js中支持如下几种类型的变量，分别为:局部变量、类变量、私有变量、实例变量、静态变量和全局变量。接下来我们就一一探讨研究下。</p>
<p><strong style="COLOR: red">局部变量</strong>：<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"><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;foo(flag)<br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img id=Codehighlighter1_19_185_Open_Image onclick="this.style.display='none'; Codehighlighter1_19_185_Open_Text.style.display='none'; Codehighlighter1_19_185_Closed_Image.style.display='inline'; Codehighlighter1_19_185_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_19_185_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_19_185_Closed_Text.style.display='none'; Codehighlighter1_19_185_Open_Image.style.display='inline'; Codehighlighter1_19_185_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_19_185_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_19_185_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;sum&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(flag&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img id=Codehighlighter1_54_126_Open_Image onclick="this.style.display='none'; Codehighlighter1_54_126_Open_Text.style.display='none'; Codehighlighter1_54_126_Closed_Image.style.display='inline'; Codehighlighter1_54_126_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_54_126_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_54_126_Closed_Text.style.display='none'; Codehighlighter1_54_126_Open_Image.style.display='inline'; Codehighlighter1_54_126_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;</span><span id=Codehighlighter1_54_126_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_54_126_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;index;<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(index</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;index</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">;index</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img id=Codehighlighter1_103_123_Open_Image onclick="this.style.display='none'; Codehighlighter1_103_123_Open_Text.style.display='none'; Codehighlighter1_103_123_Closed_Image.style.display='inline'; Codehighlighter1_103_123_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_103_123_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_103_123_Closed_Text.style.display='none'; Codehighlighter1_103_123_Open_Image.style.display='inline'; Codehighlighter1_103_123_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;</span><span id=Codehighlighter1_103_123_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_103_123_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;sum&nbsp;</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">index;<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">index&nbsp;is&nbsp;:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">index</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;br&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;sum;<br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">document.write("sum&nbsp;is&nbsp;:"&nbsp;+sum+"&lt;br&gt;");</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">16</span><span style="COLOR: #008000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">result&nbsp;is&nbsp;:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">foo(</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;br&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);</span></div>
<p>&nbsp;&nbsp;&nbsp;该代码执行后输出的结果为：&#8220;index is :undefined&#8221; 和 &#8220;result is :0&#8221;，我们可以看到希望输出的index变量的值为undefined，也就是未定义。因此我们可以发现，index变量在if语句块结束后即被销毁了。那么&#8220;sum&#8221;变量呢？这个变量在foo()函数段执行完毕后被销毁了，如果您去掉我注释的那条语句，再执行，您将会发现系统将报错。<span style="BACKGROUND-COLOR: yellow">值得注意的是</span>，如果我把上面的foo()函数改成如下:</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;foo(flag)<br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img id=Codehighlighter1_19_148_Open_Image onclick="this.style.display='none'; Codehighlighter1_19_148_Open_Text.style.display='none'; Codehighlighter1_19_148_Closed_Image.style.display='inline'; Codehighlighter1_19_148_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_19_148_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_19_148_Closed_Text.style.display='none'; Codehighlighter1_19_148_Open_Image.style.display='inline'; Codehighlighter1_19_148_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_19_148_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_19_148_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;sum&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;index</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;index</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">;index</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img id=Codehighlighter1_71_89_Open_Image onclick="this.style.display='none'; Codehighlighter1_71_89_Open_Text.style.display='none'; Codehighlighter1_71_89_Closed_Image.style.display='inline'; Codehighlighter1_71_89_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_71_89_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_71_89_Closed_Text.style.display='none'; Codehighlighter1_71_89_Open_Image.style.display='inline'; Codehighlighter1_71_89_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;</span><span id=Codehighlighter1_71_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.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_71_89_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;sum&nbsp;</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">index;<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">index&nbsp;is&nbsp;:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">index</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;br&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;sum;<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<p><br>&nbsp;&nbsp;&nbsp;您将可以看见可以输出index值("index is :10")，这个是js和其他语言的不同地方，因为index是在for循环的{}外面定义的，因此其作用范围在foo()函数使用完毕后才销毁。</p>
<p>&nbsp;&nbsp;<span style="COLOR: red"><strong>类变量：</strong></span><br>&nbsp;&nbsp;&nbsp;类变量，实际上就是类的一个属性或字段或一个方法，该变量在该类的一个实例对象被销毁后自动销毁，比如我们开始时举的Student类。这个我们不多讨论，大家可以自己试一下。</p>
<p><strong style="COLOR: red">私有变量</strong>：<br>&nbsp;&nbsp;&nbsp;私有变量，值得是某个类自己内部是用的一个属性，外部无法调用，其定义是用 var 来声明的。<span style="BACKGROUND-COLOR: yellow">注意如果不用var 来声明，该变量将是全局变量</span>（我们下面将会讨论），如：</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;Student(name,age,from)<br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img id=Codehighlighter1_32_307_Open_Image onclick="this.style.display='none'; Codehighlighter1_32_307_Open_Text.style.display='none'; Codehighlighter1_32_307_Closed_Image.style.display='inline'; Codehighlighter1_32_307_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_32_307_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_32_307_Closed_Text.style.display='none'; Codehighlighter1_32_307_Open_Image.style.display='inline'; Codehighlighter1_32_307_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_32_307_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_32_307_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.name&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;FormatIt(name);<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.age&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;age;<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.from&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;from;<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;origName&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;name;<br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;FormatIt&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(name)<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img id=Codehighlighter1_154_184_Open_Image onclick="this.style.display='none'; Codehighlighter1_154_184_Open_Text.style.display='none'; Codehighlighter1_154_184_Closed_Image.style.display='inline'; Codehighlighter1_154_184_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_154_184_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_154_184_Closed_Text.style.display='none'; Codehighlighter1_154_184_Open_Image.style.display='inline'; Codehighlighter1_154_184_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;</span><span id=Codehighlighter1_154_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.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_154_184_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;name.substr(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.ToString&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()<br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img id=Codehighlighter1_215_305_Open_Image onclick="this.style.display='none'; Codehighlighter1_215_305_Open_Text.style.display='none'; Codehighlighter1_215_305_Closed_Image.style.display='inline'; Codehighlighter1_215_305_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_215_305_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_215_305_Closed_Text.style.display='none'; Codehighlighter1_215_305_Open_Image.style.display='inline'; Codehighlighter1_215_305_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;</span><span id=Codehighlighter1_215_305_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_215_305_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">my&nbsp;information&nbsp;is&nbsp;name:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">origName</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,age&nbsp;:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.age</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;from&nbsp;:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.from;<br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<p>&nbsp;&nbsp;&nbsp;这里，我们分别定义了一个origName和FormatIt()两个私有变量（<span style="BACKGROUND-COLOR: yellow">按面向对象的解释，应该用类的属性来称呼</span>）。<br>&nbsp;&nbsp;&nbsp;我们把这种情况下的方法也成为变量，因为该情况下的变量是个function类型的变量，而function也属于Object类的继承类。在这种情形下，如果我们定义了 var zfp = new Student("3zfp",100,"ShenZhen")。但无法通过zfp.origName和zfp.FormatIt()方式来访问这两个变量的。<br><br><strong>注意以下几点</strong>：<br><br><strong><em>1</em></strong>、私有变量是不能用this来指示的。<br><em><strong>2</strong></em>、私有方法类型的变量的调用必须是在该方法声明后。如我们将Student类改造如下：</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;Student(name,age,from)<br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img id=Codehighlighter1_32_307_Open_Image onclick="this.style.display='none'; Codehighlighter1_32_307_Open_Text.style.display='none'; Codehighlighter1_32_307_Closed_Image.style.display='inline'; Codehighlighter1_32_307_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_32_307_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_32_307_Closed_Text.style.display='none'; Codehighlighter1_32_307_Open_Image.style.display='inline'; Codehighlighter1_32_307_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_32_307_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_32_307_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;origName&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;name;<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.name&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;FormatName(name);<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.age&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;age;<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.from&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;from;<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;FormatName&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(name)<br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img id=Codehighlighter1_157_184_Open_Image onclick="this.style.display='none'; Codehighlighter1_157_184_Open_Text.style.display='none'; Codehighlighter1_157_184_Closed_Image.style.display='inline'; Codehighlighter1_157_184_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_157_184_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_157_184_Closed_Text.style.display='none'; Codehighlighter1_157_184_Open_Image.style.display='inline'; Codehighlighter1_157_184_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;</span><span id=Codehighlighter1_157_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.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_157_184_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;name</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">.china</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.ToString&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()<br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img id=Codehighlighter1_215_305_Open_Image onclick="this.style.display='none'; Codehighlighter1_215_305_Open_Text.style.display='none'; Codehighlighter1_215_305_Closed_Image.style.display='inline'; Codehighlighter1_215_305_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_215_305_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_215_305_Closed_Text.style.display='none'; Codehighlighter1_215_305_Open_Image.style.display='inline'; Codehighlighter1_215_305_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;</span><span id=Codehighlighter1_215_305_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_215_305_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">my&nbsp;information&nbsp;is&nbsp;name:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">origName</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,age&nbsp;:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.age</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;from&nbsp;:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.from;<br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;zfp&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Student(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">3zfp</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ShenZhen</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);</span></div>
<p>代码执行后，将会报"找不到对象"的错误.意思是FormatName()未定义。<br><br><em><strong>3、</strong></em>私有方法无法访问this指示的变量（公开变量），如下：</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;Student(basicinfo)<br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img id=Codehighlighter1_29_166_Open_Image onclick="this.style.display='none'; Codehighlighter1_29_166_Open_Text.style.display='none'; Codehighlighter1_29_166_Closed_Image.style.display='inline'; Codehighlighter1_29_166_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_29_166_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_29_166_Closed_Text.style.display='none'; Codehighlighter1_29_166_Open_Image.style.display='inline'; Codehighlighter1_29_166_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_29_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.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_29_166_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.basicInfo&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;basicinfo;<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;FormatInfo&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img id=Codehighlighter1_91_148_Open_Image onclick="this.style.display='none'; Codehighlighter1_91_148_Open_Text.style.display='none'; Codehighlighter1_91_148_Closed_Image.style.display='inline'; Codehighlighter1_91_148_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_91_148_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_91_148_Closed_Text.style.display='none'; Codehighlighter1_91_148_Open_Image.style.display='inline'; Codehighlighter1_91_148_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;</span><span id=Codehighlighter1_91_148_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_91_148_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.basicInfo.name&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.basicInfo.name</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">.china</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;FormatInfo();<br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;BasicInfo(name,age,from)<br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img id=Codehighlighter1_202_259_Open_Image onclick="this.style.display='none'; Codehighlighter1_202_259_Open_Text.style.display='none'; Codehighlighter1_202_259_Closed_Image.style.display='inline'; Codehighlighter1_202_259_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_202_259_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_202_259_Closed_Text.style.display='none'; Codehighlighter1_202_259_Open_Image.style.display='inline'; Codehighlighter1_202_259_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_202_259_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_202_259_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.name&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;name;<br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.age&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;age;<br></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.from&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;from;<br></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;zfp&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Student(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;BasicInfo(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">3zfp</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ShenZhen</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<p>执行代码后，系统将会提示 &#8220;this.basicInfo为空或不是对象&#8221;的错误。<br><span style="BACKGROUND-COLOR: yellow">基本结论是，私有方法只能访问私有属性，私有属性在声明并赋值后可以在类的任何地方访问</span>，</p>
<p><strong style="COLOR: red">实例变量：</strong><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"><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;BasicInfo(name,age,from)<br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img id=Codehighlighter1_35_92_Open_Image onclick="this.style.display='none'; Codehighlighter1_35_92_Open_Text.style.display='none'; Codehighlighter1_35_92_Closed_Image.style.display='inline'; Codehighlighter1_35_92_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_35_92_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_35_92_Closed_Text.style.display='none'; Codehighlighter1_35_92_Open_Image.style.display='inline'; Codehighlighter1_35_92_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_35_92_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_35_92_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.name&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;name;<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.age&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;age;<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.from&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;from;<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;basicA&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;BasicInfo(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">3zfp</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ShenZhen</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>basicA.generalInfo&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">is&nbsp;3zfp&nbsp;owned&nbsp;object</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">basicA's&nbsp;generalInfo&nbsp;is&nbsp;:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;basicA.generalInfo</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;br&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;basicB&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;BasicInfo(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">zfp</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ShenZhen</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">basicB's&nbsp;generalInfo&nbsp;is&nbsp;:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;basicB.generalInfo</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;br&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>执行该代码后，我们将可以看到如下结果：<br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>basicA's&nbsp;generalInfo&nbsp;is&nbsp;:&nbsp;is&nbsp;3zfp&nbsp;owned&nbsp;object<br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>basicB's&nbsp;generalInfo&nbsp;is&nbsp;:&nbsp;undefined<br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<p><strong style="COLOR: red">静态变量：<br></strong><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"><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;BasicInfo(name,age,from)<br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img id=Codehighlighter1_34_91_Open_Image onclick="this.style.display='none'; Codehighlighter1_34_91_Open_Text.style.display='none'; Codehighlighter1_34_91_Closed_Image.style.display='inline'; Codehighlighter1_34_91_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_34_91_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_34_91_Closed_Text.style.display='none'; Codehighlighter1_34_91_Open_Image.style.display='inline'; Codehighlighter1_34_91_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_34_91_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_34_91_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.name&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;name;<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.age&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;age;<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.from&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;from;<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>BasicInfo.generalInfo&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">is&nbsp;3zfp&nbsp;owned&nbsp;object</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;basic&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;BasicInfo(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">zfp</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ShenZhen</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>document.write(basic.generalInfo</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;br&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>document.write(BasicInfo.generalInfo</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;br&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)；<br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>BasicInfo.generalInfo&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">info&nbsp;is&nbsp;changed</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>document.write(BasicInfo.generalInfo</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;br&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)；</span></div>
<p>执行以上代码，将会得到如下结果：<br>undefined<br>is 3zfp owned object<br>info is changed</p>
<p><strong>注意以下几点</strong>：<br><em><strong>1</strong></em>、以 类名+"."+静态变量名 的方式来声明一个静态变量<br><strong><em>2</em></strong>、静态变量并不属于类的某个实例对象所独有的属性,为对象的共享.<br><strong><em>3</em></strong>、能以实例对象名+"."+静态变量名来访问。</p>
<p><span style="COLOR: red"><strong>全局变量</strong>：</span><br>全局变量即整个系统运行期间有效访问控制的变量，通常是在一个js代码开头定义，如：</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;copyright&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">3zfp&nbsp;owned</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;foo&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()<br></span><span style="COLOR: #008080">4</span><span style="COLOR: #000000"><img id=Codehighlighter1_51_79_Open_Image onclick="this.style.display='none'; Codehighlighter1_51_79_Open_Text.style.display='none'; Codehighlighter1_51_79_Closed_Image.style.display='inline'; Codehighlighter1_51_79_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_51_79_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_51_79_Closed_Text.style.display='none'; Codehighlighter1_51_79_Open_Image.style.display='inline'; Codehighlighter1_51_79_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_51_79_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_51_79_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">5</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;window.alert(copyright);<br></span><span style="COLOR: #008080">6</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<p><strong>注意以下几点</strong>：<br><br><strong><em>1</em></strong>、如果一个变量不用var 来声明，则其被视为全局变量。如：</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;copyright&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">3zfp&nbsp;owned</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;foo&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(fooInfo)<br></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img id=Codehighlighter1_57_111_Open_Image onclick="this.style.display='none'; Codehighlighter1_57_111_Open_Text.style.display='none'; Codehighlighter1_57_111_Closed_Image.style.display='inline'; Codehighlighter1_57_111_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_57_111_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_57_111_Closed_Text.style.display='none'; Codehighlighter1_57_111_Open_Image.style.display='inline'; Codehighlighter1_57_111_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_57_111_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_57_111_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">4</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;_foo&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;fooInfo;<br></span><span style="COLOR: #008080">5</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;document.write(copyright</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;br&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">6</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">7</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;foo(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">foo&nbsp;test</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">8</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>document.write(_foo</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;br&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);</span></div>
<p>执行代码，将得到如下结果：<br>3zfp owned<br>foo test<br><span style="BACKGROUND-COLOR: yellow">但是，这个又有一个注意的地方，function是编译期对象，也就是说_foo这个全局变量要在foo对象被实例化后才能被初始化，也就是说如果将<br></span>new foo();<br>document.write(_foo+"&lt;br&gt;");<br>对调成<br>document.write(_foo+"&lt;br&gt;");<br>new foo();<br>系统将提示 "_foo 未定义"。 <br><em><strong>2</strong></em>、如果定义了一个和全局变量同名的局部变量属性，如下：</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;copyright&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">3zfp&nbsp;owned</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;foo&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(fooInfo)<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img id=Codehighlighter1_59_164_Open_Image onclick="this.style.display='none'; Codehighlighter1_59_164_Open_Text.style.display='none'; Codehighlighter1_59_164_Closed_Image.style.display='inline'; Codehighlighter1_59_164_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_59_164_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_59_164_Closed_Text.style.display='none'; Codehighlighter1_59_164_Open_Image.style.display='inline'; Codehighlighter1_59_164_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_59_164_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_59_164_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;copyright&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;fooInfo;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">同名变量</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #008000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.showInfo&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()<br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img id=Codehighlighter1_123_162_Open_Image onclick="this.style.display='none'; Codehighlighter1_123_162_Open_Text.style.display='none'; Codehighlighter1_123_162_Closed_Image.style.display='inline'; Codehighlighter1_123_162_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_123_162_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_123_162_Closed_Text.style.display='none'; Codehighlighter1_123_162_Open_Image.style.display='inline'; Codehighlighter1_123_162_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;</span><span id=Codehighlighter1_123_162_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_123_162_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;document.write(copyright</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;br&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;foo(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">foo&nbsp;test</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">).showInfo();<br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>document.write(copyright</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;br&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);</span></div>
<p>执行代码，将得到如下结果：<br>foo test<br>3zfp owned<br><span style="BACKGROUND-COLOR: yellow">原因是由于function 是在编译期间完成变量的定义，也就是foo内部的copyright的定义是在编译期间完成的，其作用域只在foo对象内有效，而与外部定义的全局变量copyright无关。</span></p><img src ="http://www.phpweblog.net/killjin/aggbug/2388.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/killjin/" target="_blank">Prog</a> 2007-11-26 04:02 <a href="http://www.phpweblog.net/killjin/archive/2007/11/26/2388.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JS变量范围一解,未用Var声明则默认创建为全局变量</title><link>http://www.phpweblog.net/killjin/archive/2007/11/26/2387.html</link><dc:creator>Prog</dc:creator><author>Prog</author><pubDate>Sun, 25 Nov 2007 19:01:00 GMT</pubDate><guid>http://www.phpweblog.net/killjin/archive/2007/11/26/2387.html</guid><wfw:comment>http://www.phpweblog.net/killjin/comments/2387.html</wfw:comment><comments>http://www.phpweblog.net/killjin/archive/2007/11/26/2387.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/killjin/comments/commentRss/2387.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/killjin/services/trackbacks/2387.html</trackback:ping><description><![CDATA[代码如下: <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"><span style="COLOR: #008080">&nbsp;1</span>&nbsp;<span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">script&nbsp;&nbsp;&nbsp;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">&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;2</span>&nbsp;<span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;3</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;loopLimit&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">循环限制&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">&nbsp;4</span>&nbsp;<span style="COLOR: #008000"></span><span style="COLOR: #000000">&nbsp;&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;func1(){&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;5</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;loop</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;&nbsp;&nbsp;loop</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">loopLimit;&nbsp;&nbsp;&nbsp;loop</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)&nbsp;{&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;6</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;func2();&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;7</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;br&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;8</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;9</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">10</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">11</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;func2(){&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">12</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;loop</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;&nbsp;&nbsp;loop</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">;&nbsp;&nbsp;&nbsp;loop</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">){&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">13</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.write(loop</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\t</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">14</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">15</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">16</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">17</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;func1();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">调用函数&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">18</span>&nbsp;<span style="COLOR: #008000"></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span></div>
两个Var去掉一个可以，全部去掉后就会无限循环。 <br>
<img src ="http://www.phpweblog.net/killjin/aggbug/2387.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/killjin/" target="_blank">Prog</a> 2007-11-26 03:01 <a href="http://www.phpweblog.net/killjin/archive/2007/11/26/2387.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>