<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5217839564245167925</id><updated>2012-02-01T08:37:39.811+08:00</updated><category term='mobile'/><category term='UI/UE'/><category term='Web2.0好站推荐'/><category term='互联网'/><category term='经济'/><category term='web'/><category term='php'/><category term='掉包诈骗'/><category term='Linux Fedora 音乐'/><category term='太子奶有苍蝇'/><category term='social web2.0'/><category term='asp.net'/><category term='创业路上'/><category term='web http'/><category term='中国网名人数'/><category term='game'/><category term='项目管理'/><category term='社会化企业'/><category term='推荐工具'/><category term='rubyonrails'/><title type='text'>Jouy's Blog</title><subtitle type='html'>我们常常用的，不过是前人的智慧。</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>62</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-2985914896590820455</id><published>2009-05-15T16:41:00.002+08:00</published><updated>2009-05-15T16:57:19.925+08:00</updated><title type='text'>appspot.com 被封</title><content type='html'>终于还是被和谐了。&lt;br /&gt;&lt;br /&gt;结论是：&lt;br /&gt;&lt;br /&gt;在中国，google用户和google每一项产品都要经历一次牛郎织女的故事!&lt;br /&gt;&lt;br /&gt;还好最近部署在app engine上应用，是给台湾用户使用的。所以他们应该不受影响。&lt;br /&gt;&lt;br /&gt;我只能通过自己解析域名了，&lt;br /&gt;目前：在网上搜索到 72.14.235.141 的ip 还是能用的。&lt;br /&gt;&lt;br /&gt;修改自己的hosts文件，增加：&lt;br /&gt;72.14.235.141 for-mid-as.appspot.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-2985914896590820455?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/2985914896590820455/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=2985914896590820455' title='4 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/2985914896590820455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/2985914896590820455'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2009/05/appspotcom.html' title='appspot.com 被封'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-5276473907391646588</id><published>2009-02-28T14:13:00.003+08:00</published><updated>2009-02-28T14:17:57.981+08:00</updated><title type='text'>搬迁</title><content type='html'>又是一次搬迁&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;前不久我找到了一个在appengine上跑的很好的blog ： &lt;a href="http://xuming.net"&gt;miclog&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;我搬到了: &lt;a href="http://blog-life.appspot.com"&gt;http://blog-life.appspot.com&lt;/a&gt;上。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;不清楚以后还要不要搬，搬来搬去对写blog的欲望有很大的影响。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-5276473907391646588?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/5276473907391646588/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=5276473907391646588' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/5276473907391646588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/5276473907391646588'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2009/02/blog-post.html' title='搬迁'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-7426138206578742319</id><published>2009-01-22T20:26:00.001+08:00</published><updated>2009-01-22T20:26:55.575+08:00</updated><title type='text'>淡淡的新年 乱乱的心情</title><content type='html'>年复一年，淡淡的新年&lt;br&gt;&lt;br&gt;好多的事，好多的人&lt;br&gt;好长的路，好长时间&lt;br&gt;&lt;br&gt;&lt;br&gt;2009会不会是个英雄辈出的一年&lt;br&gt;&lt;br&gt;危机与机遇，寄希望于新的一年&lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-7426138206578742319?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/7426138206578742319/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=7426138206578742319' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/7426138206578742319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/7426138206578742319'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2009/01/blog-post.html' title='淡淡的新年 乱乱的心情'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-3119067276445371194</id><published>2009-01-22T18:22:00.007+08:00</published><updated>2009-01-22T19:02:59.833+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><title type='text'>09年手机将不再山寨</title><content type='html'>08年，山寨手机铺天盖地，无论是在公交车上、小饭馆还是马路上都听到山寨机发出的刺耳的“音乐”。08年山寨机商贩们肯定挣了不少钱，09年山寨还能这么风光？&lt;br /&gt;&lt;br /&gt;web2.0造就了“用户体验”，现今用户体验应该深入各个领域，随着中国人的生活水平的提供，人们对生活品质有了新的认识。山寨的东西，山寨的服务将被人们所厌恶。&lt;br /&gt;&lt;br /&gt;09，或10年手机的用户体验将直接颠覆08年的山寨机。&lt;br /&gt;&lt;br /&gt;所以，一向不善于创新的中国企业及其企业家需要换一种思维来思考他们的产品！否则，中国的市场必将成世界的市场......&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-3119067276445371194?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/3119067276445371194/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=3119067276445371194' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/3119067276445371194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/3119067276445371194'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2009/01/09.html' title='09年手机将不再山寨'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-7757268829809916072</id><published>2009-01-22T17:43:00.002+08:00</published><updated>2009-01-22T19:07:00.377+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='互联网'/><title type='text'>09年互联网7个预测</title><content type='html'>&lt;span class="Apple-style-span" style="line-height: 28px; font-family: courier new;font-family:宋体;font-size:100%;"  &gt;&lt;p style="color: rgb(0, 0, 153);"&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;1.单一ID将可登录多个社交网站&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;    分析师克里斯・布洛根（Chris Brogan）认为，未来只要有一个完整的用户信息，用户就可以根据情况登录不同类型的社交网站。现在各大社交网站之所以还没有这么做是因为每个网站都希望将用户信息存储在自己的网站上，不过这种情况在2009年将有所改变。&lt;/p&gt; &lt;p&gt;    &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;2.Ionut Alex Chitu博客对2009年谷歌的三大预测&lt;/span&gt;&lt;/p&gt;&lt;p&gt;    1）微软Live Search市场份额将上升，谷歌搜索市场份额将下降；&lt;/p&gt;&lt;p&gt;    2）谷歌将推出OneGoogle，允许用户在不同的谷歌应用程序中快速切换。&lt;/p&gt;&lt;p&gt;    3）谷歌将很快在美国推出GrandCentral，并且这个服务将和Gmail整合在一起。&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;    &lt;span style="color: rgb(0, 0, 153);"&gt;3.企业博客上的信息将更加实时&lt;/span&gt;&lt;/p&gt;&lt;p&gt;     Mark Logic首席执行官戴维・凯劳格（Dave Kellog）认为越来越多的公司将使用博客来作为传递企业信息的工具。戴维认为企业博客上的信息一定要实时更新才有用。&lt;/p&gt;&lt;p&gt;    &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;4.财经新闻网站Tip'd将越来越受欢迎&lt;/span&gt;&lt;/p&gt;&lt;p&gt;    GigaOM创始人奥姆・马利克（Om Malik）表示，Tip'd（&lt;a href="http://tipd.com/"&gt;tipd.com&lt;/a&gt;）作为一个搜集财经类新闻的网站，每天都能吸引他上去看看新闻。虽然Tip'd还是一个刚刚兴起的网站，根据Compete.com的数据，这个网站在11月份还只有10万名访客，不过像Digg一样，Tip'd的前景很光明。&lt;/p&gt; &lt;p style="color: rgb(0, 0, 153);"&gt;    &lt;span style="font-weight: bold;"&gt;5.&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="line-height: 28px; font-family: courier new;font-family:宋体;font-size:100%;"  &gt;RSS&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;WordPress创始人马特・穆伦维格（Matt Mullenweg）认为，RSS服务的实时性将增强，而博客也将越来越互动。&lt;/p&gt;&lt;p&gt;    &lt;strong&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;6.Uber博客和新媒体将兴起&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;    Uber博客是一种汇聚不同信息内容的综合大型博客，知名科技博客作者邓肯・莱利（Duncan Riley）认为Uber博客在2009年将兴起。Uber博客的兴起同时也将意味着新媒体时代的到来。&lt;/p&gt; &lt;p style="font-weight: bold; color: rgb(0, 0, 153);"&gt;    7.&lt;span&gt;&lt;span class="Apple-style-span" style="line-height: 28px; font-family: courier new;font-family:宋体;font-size:100%;"  &gt;手机将成为互联网访问的主要工具&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;市场调研机构Pew Internet and American Life Project则对2020年以前的互联网做出了预测。它认为手机将成为互联网访问的主要工具；语音识别和触摸技术将更加普及。 （编译/碧波）&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-7757268829809916072?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/7757268829809916072/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=7757268829809916072' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/7757268829809916072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/7757268829809916072'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2009/01/097.html' title='09年互联网7个预测'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-4327509114373609947</id><published>2009-01-21T11:08:00.001+08:00</published><updated>2009-01-21T11:08:07.341+08:00</updated><title type='text'>悟透JavaScript</title><content type='html'>&lt;blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"&gt;&lt;p&gt;&lt;strong&gt;blogger 最近好像又被和谐了, 幸好gmail一样可以发布blog！&lt;br&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;&lt;br&gt; &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;引子&lt;/strong&gt;&lt;/p&gt; &lt;strong&gt; &lt;/strong&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 编程世界里只存在两种基本元素，一个是数据，一个是代码。编程世界就是在数据和代码千丝万缕的纠缠中呈现出无限的生机和活力。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;数据天生就是文静的，总想保持自己固有的本色；而代码却天生活泼，总想改变这个世界。&lt;br&gt; &amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp; 你看，数据代码间的关系与物质能量间的关系有着惊人的相似。数据也是有惯性的，如果没有代码来施加外力，她总保持自己原来的状态。而代码就象能量，他存在 的唯一目的，就是要努力改变数据原来的状态。在代码改变数据的同时，也会因为数据的抗拒而反过来影响或改变代码原有的趋势。甚至在某些情况下，数据可以转 变为代码，而代码却又有可能被转变为数据，或许还存在一个类似E=MC2形式的数码转换方程呢。然而，就是在数据和代码间这种即矛盾又统一的运转中，总能 体现出计算机世界的规律，这些规律正是我们编写的程序逻辑。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 不过，由于不同程序员有着不同的世界观，这些数据和代码看起来也就不尽相同。于是，不同世界观的程序员们运用各自的方法论，推动着编程世界的进化和发展。&lt;br&gt; &amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 众所周知，当今最流行的编程思想莫过于面向对象编程的思想。为什么面向对象的思想能迅速风靡编程世界呢？因为面向对象的思想首次把数据和代码结合成统一 体，并以一个简单的对象概念呈现给编程者。这一下子就将原来那些杂乱的算法与子程序，以及纠缠不清的复杂数据结构，划分成清晰而有序的对象结构，从而理清 了数据与代码在我们心中那团乱麻般的结。我们又可以有一个更清晰的思维，在另一个思想高度上去探索更加浩瀚的编程世界了。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 在五祖弘忍讲授完《对象真经》之后的一天，他对众弟子们说："经已讲完，想必尔等应该有所感悟，请各自写个偈子来看"。大弟子神秀是被大家公认为悟性最高 的师兄，他的偈子写道："身是对象树，心如类般明。朝朝勤拂拭，莫让惹尘埃！"。此偈一出，立即引起师兄弟们的轰动，大家都说写得太好了。只有火头僧慧能 看后，轻轻地叹了口气，又随手在墙上写道："对象本无根，类型亦无形。本来无一物，何处惹尘埃？"。然后摇了摇头，扬长而去。大家看了慧能的偈子都说：" 写的什么乱七八糟的啊，看不懂"。师父弘忍看了神秀的诗偈也点头称赞，再看慧能的诗偈之后默然摇头。就在当天夜里，弘忍却悄悄把慧能叫到自己的禅房，将珍 藏多年的软件真经传授于他，然后让他趁着月色连夜逃走...&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 后来，慧能果然不负师父厚望，在南方开创了禅宗另一个广阔的天空。而慧能当年带走的软件真经中就有一本是《JavaScript真经》！&lt;br&gt; &lt;br&gt; &lt;strong&gt;回归简单&lt;br&gt; &lt;/strong&gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 要理解JavaScript，你得首先放下对象和类的概念，回到数据和代码的本原。前面说过，编程世界只有数据和代码两种基本元素，而这两种元素又有着纠缠不清的关系。JavaScript就是把数据和代码都简化到最原始的程度。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; JavaScript中的数据很简洁的。简单数据只有 undefined, null, boolean, number和string这五种，而复杂数据只有一种，即object。这就好比中国古典的朴素唯物思想，把世界最基本的元素归为金木水火土，其他复杂 的物质都是由这五种基本元素组成。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; JavaScript中的代码只体现为一种形式，就是function。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 注意：以上单词都是小写的，不要和Number, String, Object, Function等JavaScript内置函数混淆了。要知道，JavaScript语言是区分大小写的呀!&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 任何一个JavaScript的标识、常量、变量和参数都只是unfined, null, bool, number, string, object 和 function类型中的一种，也就typeof返回值表明的类型。除此之外没有其他类型了。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 先说说简单数据类型吧。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; undefined:&amp;nbsp;&amp;nbsp; 代表一切未知的事物，啥都没有，无法想象，代码也就更无法去处理了。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 注意：typeof(undefined) 返回也是 undefined。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 可以将undefined赋值给任何变量或属性，但并不意味了清除了该变量，反而会因此多了一个属性。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; null:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 有那么一个概念，但没有东西。无中似有，有中还无。虽难以想象，但已经可以用代码来处理了。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 注意：typeof(null)返回object，但null并非object，具有null值的变量也并非object。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; boolean:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 是就是，非就非，没有疑义。对就对，错就错，绝对明确。既能被代码处理，也可以控制代码的流程。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; number:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 线性的事物，大小和次序分明，多而不乱。便于代码进行批量处理，也控制代码的迭代和循环等。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 注意：typeof(NaN)和typeof(Infinity)都返回number 。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NaN参与任何数值计算的结构都是NaN，而且 NaN != NaN 。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Infinity / Infinity = NaN 。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; string:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 面向人类的理性事物，而不是机器信号。人机信息沟通，代码据此理解人的意图等等，都靠它了。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 简单类型都不是对象，JavaScript没有将对象化的能力赋予这些简单类型。直接被赋予简单类型常量值的标识符、变量和参数都不是一个对象。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;所谓"对象化"，就是可以将数据和代码组织成复杂结构的能力。JavaScript中只有object类型和function类型提供了对象化的能力。&lt;br&gt; &lt;br&gt; &lt;strong&gt;没有类&lt;br&gt; &lt;/strong&gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; object就是对象的类型。在JavaScript中不管多么复杂的数据和代码，都可以组织成object形式的对象。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;但JavaScript却没有 "类"的概念！&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;对于许多面向对象的程序员来说，这恐怕是JavaScript中最难以理解的地方。是啊，几乎任何讲面向对象的书中，第一个要讲的就是"类"的概 念，这可是面向对象的支柱。这突然没有了"类"，我们就象一下子没了精神支柱，感到六神无主。看来，要放下对象和类，达到"对象本无根，类型亦无形"的境 界确实是件不容易的事情啊。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 这样，我们先来看一段JavaScript程序：&lt;br&gt; &lt;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);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;life&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;{};&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(life.age&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&amp;nbsp;life.age&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;3&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&amp;nbsp;life.age&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;++&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;switch&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(life.age)&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;case&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;:&amp;nbsp;life.body&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;卵细胞&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;life.say&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(){alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.age&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.body)};&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;break&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;case&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;2&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;:&amp;nbsp;life.tail&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;尾巴&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;life.gill&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;腮&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;life.body&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;蝌蚪&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;life.say&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(){alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.age&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.body&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.tail&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.gill)};&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;break&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;case&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;3&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;delete&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;life.tail;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;delete&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;life.gill;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;life.legs&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;四条腿&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;life.lung&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;肺&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;life.body&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;青蛙&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;life.say&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(){alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.age&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.body&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.legs&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.lung)};&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;break&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;life.say();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;/span&gt;&lt;/div&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 这段JavaScript程序一开始产生了一个生命对象life，life诞生时只是一个光溜溜的对象，没有任何属性和方法。在第一次生命过程中，它有了 一个身体属性body，并有了一个say方法，看起来是一个"卵细胞"。在第二次生命过程中，它又长出了"尾巴"和"腮"，有了tail和gill属性， 显然它是一个"蝌蚪"。在第三次生命过程中，它的tail和gill属性消失了，但又长出了"四条腿"和"肺"，有了legs和lung属性，从而最终变 成了"青蛙"。如果，你的想像力丰富的话，或许还能让它变成英俊的"王子"，娶个美丽的"公主"什么的。不过，在看完这段程序之后，请你思考一个问题：&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 我们一定需要类吗？&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 还记得儿时那个"小蝌蚪找妈妈"的童话吗？也许就在昨天晚，你的孩子刚好是在这个美丽的童话中进入梦乡的吧。可爱的小蝌蚪也就是在其自身类型不断演化过程 中，逐渐变成了和妈妈一样的"类"，从而找到了自己的妈妈。这个童话故事中蕴含的编程哲理就是：对象的"类"是从无到有，又不断演化，最终又消失于无形之 中的...&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; "类"，的确可以帮助我们理解复杂的现实世界，这纷乱的现实世界也的确需要进行分类。但如果我们的思想被"类"束缚住了，"类"也就变成了"累"。想象一 下，如果一个生命对象开始的时就被规定了固定的"类"，那么它还能演化吗？蝌蚪还能变成青蛙吗？还可以给孩子们讲小蝌蚪找妈妈的故事吗？&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 所以，JavaScript中没有"类"，类已化于无形，与对象融为一体。正是由于放下了"类"这个概念，JavaScript的对象才有了其他编程语言所没有的活力。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 如果，此时你的内心深处开始有所感悟，那么你已经逐渐开始理解JavaScript的禅机了。&lt;br&gt; &lt;br&gt; &lt;strong&gt;函数的魔力&lt;/strong&gt;&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 接下来，我们再讨论一下JavaScript函数的魔力吧。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; JavaScript的代码就只有function一种形式，function就是函数的类型。也许其他编程语言还有procedure或 method等代码概念，但在JavaScript里只有function一种形式。当我们写下一个函数的时候，只不过是建立了一个function类型 的实体而已。请看下面的程序：&lt;br&gt; &lt;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);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;myfunc()&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;hello&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;typeof&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(myfunc));&lt;/span&gt;&lt;/div&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 这个代码运行之后可以看到typeof(myfunc)返回的是function。以上的函数写法我们称之为"定义式"的，如果我们将其改写成下面的"变量式"的，就更容易理解了：&lt;br&gt; &lt;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);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;myfunc&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;()&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;hello&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;typeof&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(myfunc));&lt;/span&gt;&lt;/div&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 这里明确定义了一个变量myfunc，它的初始值被赋予了一个function的实体。因此，typeof(myfunc)返回的也是function。 其实，这两种函数的写法是等价的，除了一点细微差别，其内部实现完全相同。也就是说，我们写的这些JavaScript函数只是一个命了名的变量而已，其 变量类型即为function，变量的值就是我们编写的函数代码体。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 聪明的你或许立即会进一步的追问：既然函数只是变量，那么变量就可以被随意赋值并用到任意地方�？&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 我们来看看下面的代码：&lt;br&gt; &lt;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);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;myfunc&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;()&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;hello&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;myfunc();&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;第一次调用myfunc，输出hello&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;myfunc&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;()&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;yeah&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;myfunc();&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;第二次调用myfunc，将输出yeah&lt;/span&gt;&lt;/div&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 这个程序运行的结果告诉我们：答案是肯定的！在第一次调用函数之后，函数变量又被赋予了新的函数代码体，使得第二次调用该函数时，出现了不同的输出。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 好了，我们又来把上面的代码改成第一种定义式的函数形式：&lt;br&gt; &lt;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);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;myfunc&amp;nbsp;()&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;hello&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;myfunc();&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;这里调用myfunc，输出yeah而不是hello&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;myfunc&amp;nbsp;()&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;yeah&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;myfunc();&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;这里调用myfunc，当然输出yeah&lt;/span&gt;&lt;/div&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 按理说，两个签名完全相同的函数，在其他编程语言中应该是非法的。但在JavaScript中，这没错。不过，程序运行之后却发现一个奇怪的现象：两次调用都只是最后那个函数里输出的值！显然第一个函数没有起到任何作用。这又是为什么呢？&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 原来，JavaScript执行引擎并非一行一行地分析和执行程序，而是一段一段地分析执行的。而且，在同一段程序的分析执行中，定义式的函数语句会被提 取出来优先执行。函数定义执行完之后，才会按顺序执行其他语句代码。也就是说，在第一次调用myfunc之前，第一个函数语句定义的代码逻辑，已被第二个 函数定义语句覆盖了。所以，两次都调用都是执行最后一个函数逻辑了。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 如果把这个JavaScript代码分成两段，例如将它们写在一个html中，并用&amp;lt;script/&amp;gt;标签将其分成这样的两块：&lt;br&gt; &lt;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);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;script&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);"&gt;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255); background-color: rgb(245, 245, 245);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);"&gt;&amp;nbsp;myfunc&amp;nbsp;()&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);"&gt;hello&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);"&gt;);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;myfunc();&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); background-color: rgb(245, 245, 245);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); background-color: rgb(245, 245, 245);"&gt;这里调用myfunc，输出hello&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); background-color: rgb(245, 245, 245);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;script&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt; &lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;script&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);"&gt;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255); background-color: rgb(245, 245, 245);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);"&gt;&amp;nbsp;myfunc&amp;nbsp;()&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);"&gt;yeah&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);"&gt;);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;myfunc();&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); background-color: rgb(245, 245, 245);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); background-color: rgb(245, 245, 245);"&gt;这里调用myfunc，输出yeah&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0); background-color: rgb(245, 245, 245);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;script&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 这时，输出才是各自按顺序来的，也证明了JavaScript的确是一段段地执行的。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 一段代码中的定义式函数语句会优先执行，这似乎有点象静态语言的编译概念。所以，这一特征也被有些人称为：JavaScript的"预编译"。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 大多数情况下，我们也没有必要去纠缠这些细节问题。只要你记住一点：JavaScript里的代码也是一种数据，同样可以被任意赋值和修改的，而它的值就是代码的逻辑。只是，与一般数据不同的是，函数是可以被调用执行的。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 不过，如果JavaScript函数仅仅只有这点道行的话，这与C++的函数指针，DELPHI的方法指针，C#的委托相比，又有啥稀奇嘛！然 而，JavaScript函数的神奇之处还体现在另外两个方面：一是函数function类型本身也具有对象化的能力，二是函数function与对象 object超然的结合能力。&lt;br&gt; &lt;br&gt; &lt;strong&gt;奇妙的对象&lt;/strong&gt;&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 先来说说函数的对象化能力。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 任何一个函数都可以为其动态地添加或去除属性，这些属性可以是简单类型，可以是对象，也可以是其他函数。也就是说，函数具有对象的全部特征，你完全可以把 函数当对象来用。其实，函数就是对象，只不过比一般的对象多了一个括号"()"操作符，这个操作符用来执行函数的逻辑。即，函数本身还可以被调用，一般对 象却不可以被调用，除此之外完全相同。请看下面的代码：&lt;br&gt; &lt;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);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Sing()&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;with&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(arguments.callee)&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(author&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;：&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;poem);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Sing.author&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;李白&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Sing.poem&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;汉家秦地月，流影照明妃。一上玉关道，天涯去不归&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Sing();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Sing.author&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;李战&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Sing.poem&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;日出汉家天，月落阴山前。女儿琵琶怨，已唱三千年&lt;img alt="" src="http://www.cnblogs.com/Images/dot.gif"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Sing();&lt;/span&gt;&lt;/div&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 在这段代码中，Sing函数被定义后，又给Sing函数动态地增加了author和poem属性。将author和poem属性设为不同的作者和诗句，在 调用Sing()时就能显示出不同的结果。这个示例用一种诗情画意的方式，让我们理解了JavaScript函数就是对象的本质，也感受到了 JavaScript语言的优美。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 好了，以上的讲述，我们应该算理解了function类型的东西都是和object类型一样的东西，这种东西被我们称为"对象"。我们的确可以这样去看待这些"对象"，因为它们既有"属性"也有"方法"嘛。但下面的代码又会让我们产生新的疑惑：&lt;br&gt; &lt;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);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;anObject&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;{};&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;一个对象&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;anObject.aProperty&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Property&amp;nbsp;of&amp;nbsp;object&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;对象的一个属性&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;anObject.aMethod&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(){alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Method&amp;nbsp;of&amp;nbsp;object&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)};&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;对象的一个方法&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;主要看下面：&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(anObject[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;aProperty&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;]);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;可以将对象当数组以属性名作为下标来访问属性&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;anObject[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;aMethod&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;]();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;可以将对象当数组以方法名作为下标来调用方法&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;s&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;anObject)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;遍历对象的所有属性和方法进行迭代化处理&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(s&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;is&amp;nbsp;a&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;typeof&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(anObject[s]));&lt;/span&gt;&lt;/div&gt;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 同样对于function类型的对象也是一样：&lt;br&gt; &lt;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);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;aFunction&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; function() {};&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;一个函数&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;aFunction.aProperty&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Property&amp;nbsp;of&amp;nbsp;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;函数的一个属性&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;aFunction.aMethod&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(){alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Method&amp;nbsp;of&amp;nbsp;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)};&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;函数的一个方法&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;主要看下面：&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(aFunction[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;aProperty&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;]);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;可以将函数当数组以属性名作为下标来访问属性&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;aFunction[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;aMethod&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;]();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;可以将函数当数组以方法名作为下标来调用方法&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;s&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;aFunction)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;遍历函数的所有属性和方法进行迭代化处理&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(s&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;is&amp;nbsp;a&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;typeof&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(aFunction[s]));&lt;/span&gt;&lt;/div&gt;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 是的，对象和函数可以象数组一样，用属性名或方法名作为下标来访问并处理。那么，它到底应该算是数组呢，还是算对象？&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 我们知道，数组应该算是线性数据结构，线性数据结构一般有一定的规律，适合进行统一的批量迭代操作等，有点像波。而对象是离散数据结构，适合描述分散的和个性化的东西，有点像粒子。因此，我们也可以这样问：JavaScript里的对象到底是波还是粒子？&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 如果存在对象量子论，那么答案一定是：波粒二象性！&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 因此，JavaScript里的函数和对象既有对象的特征也有数组的特征。这里的数组被称为"字典"，一种可以任意伸缩的名称值对儿的集合。其实， object和function的内部实现就是一个字典结构，但这种字典结构却通过严谨而精巧的语法表现出了丰富的外观。正如量子力学在一些地方用粒子来 解释和处理问题，而在另一些地方却用波来解释和处理问题。你也可以在需要的时候，自由选择用对象还是数组来解释和处理问题。只要善于把握 JavaScript的这些奇妙特性，就可以编写出很多简洁而强大的代码来。&lt;br&gt; &lt;br&gt; &lt;strong&gt;放下对象&lt;/strong&gt;&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 我们再来看看function与object的超然结合吧。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 在面向对象的编程世界里，数据与代码的有机结合就构成了对象的概念。自从有了对象，编程世界就被划分成两部分，一个是对象内的世界，一个是对象外的世界。 对象天生具有自私的一面，外面的世界未经允许是不可访问对象内部的。对象也有大方的一面，它对外提供属性和方法，也为他人服务。不过，在这里我们要谈到一 个有趣的问题，就是"对象的自我意识"。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 什么？没听错吧？对象有自我意识？&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 可能对许多程序员来说，这的确是第一次听说。不过，请君看看C++、C#和Java的this，DELPHI的self，还有VB的me，或许你会恍然大悟！当然，也可能只是说句"不过如此"而已。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 然而，就在对象将世界划分为内外两部分的同时，对象的"自我"也就随之产生。"自我意识"是生命的最基本特征！正是由于对象这种强大的生命力，才使得编程世界充满无限的生机和活力。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 但对象的"自我意识"在带给我们快乐的同时也带来了痛苦和烦恼。我们给对象赋予了太多欲望，总希望它们能做更多的事情。然而，对象的自私使得它们互相争抢 系统资源，对象的自负让对象变得复杂和臃肿，对象的自欺也往往带来挥之不去的错误和异常。我们为什么会有这么多的痛苦和烦恼呢？&lt;br&gt; &amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 为此，有一个人，在对象树下，整整想了九九八十一天，终于悟出了生命的痛苦来自于欲望，但究其欲望的根源是来自于自我意识。于是他放下了"自我"，在对象 树下成了佛，从此他开始普度众生，传播真经。他的名字就叫释迦摩尼，而《JavaScript真经》正是他所传经书中的一本。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; JavaScript中也有this，但这个this却与C++、C#或Java等语言的this不同。一般编程语言的this就是对象自己，而 JavaScript的this却并不一定！this可能是我，也可能是你，可能是他，反正是我中有你，你中有我，这就不能用原来的那个"自我"来理解 JavaScript这个this的含义了。为此，我们必须首先放下原来对象的那个"自我"。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 我们来看下面的代码：&lt;br&gt; &lt;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);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;WhoAmI()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;定义一个函数WhoAmI&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;I&amp;#39;m&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.name&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;of&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;typeof&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;));&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WhoAmI();&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;此时是this当前这段代码的全局对象，在浏览器中就是window对象，其name属性为空字符串。输出：I&amp;#39;m&amp;nbsp;of&amp;nbsp;object&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;BillGates&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;{name:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Bill&amp;nbsp;Gates&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;};&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BillGates.WhoAmI&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;WhoAmI;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;将函数WhoAmI作为BillGates的方法。&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BillGates.WhoAmI();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;此时的this是BillGates。输出：I&amp;#39;m&amp;nbsp;Bill&amp;nbsp;Gates&amp;nbsp;of&amp;nbsp;object&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;SteveJobs&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;{name:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Steve&amp;nbsp;Jobs&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;};&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SteveJobs.WhoAmI&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;WhoAmI;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;将函数WhoAmI作为SteveJobs的方法。&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SteveJobs.WhoAmI();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;此时的this是SteveJobs。输出：I&amp;#39;m&amp;nbsp;Steve&amp;nbsp;Jobs&amp;nbsp;of&amp;nbsp;object&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WhoAmI.call(BillGates);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;直接将BillGates作为this，调用WhoAmI。输出：I&amp;#39;m&amp;nbsp;Bill&amp;nbsp;Gates&amp;nbsp;of&amp;nbsp;object&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WhoAmI.call(SteveJobs);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;直接将SteveJobs作为this，调用WhoAmI。输出：I&amp;#39;m&amp;nbsp;Steve&amp;nbsp;Jobs&amp;nbsp;of&amp;nbsp;object&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BillGates.WhoAmI.call(SteveJobs);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;将SteveJobs作为this，却调用BillGates的WhoAmI方法。输出：I&amp;#39;m&amp;nbsp;Steve&amp;nbsp;Jobs&amp;nbsp;of&amp;nbsp;object&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SteveJobs.WhoAmI.call(BillGates);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;将BillGates作为this，却调用SteveJobs的WhoAmI方法。输出：I&amp;#39;m&amp;nbsp;Bill&amp;nbsp;Gates&amp;nbsp;of&amp;nbsp;object&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WhoAmI.WhoAmI&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;WhoAmI;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;将WhoAmI函数设置为自身的方法。&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WhoAmI.name&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;WhoAmI&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WhoAmI.WhoAmI();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;此时的this是WhoAmI函数自己。输出：I&amp;#39;m&amp;nbsp;WhoAmI&amp;nbsp;of&amp;nbsp;function&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;({name:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;nobody&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;WhoAmI:&amp;nbsp;WhoAmI}).WhoAmI();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;临时创建一个匿名对象并设置属性后调用WhoAmI方法。输出：I&amp;#39;m&amp;nbsp;nobody&amp;nbsp;of&amp;nbsp;object&lt;/span&gt;&lt;/div&gt;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 从上面的代码可以看出，同一个函数可以从不同的角度来调用，this并不一定是函数本身所属的对象。this只是在任意对象和function元素结合时的一个概念，是种结合比起一般对象语言的默认结合更加灵活，显得更加超然和洒脱。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 在JavaScript函数中，你只能把this看成当前要服务的"这个"对象。this是一个特殊的内置参数，根据this参数，您可以访问到"这个" 对象的属性和方法，但却不能给this参数赋值。在一般对象语言中，方法体代码中的this可以省略的，成员默认都首先是"自己"的。但 JavaScript却不同，由于不存在"自我"，当访问"这个"对象时，this不可省略！&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; JavaScript提供了传递this参数的多种形式和手段，其中，象BillGates.WhoAmI()和SteveJobs.WhoAmI()这 种形式，是传递this参数最正规的形式，此时的this就是函数所属的对象本身。而大多数情况下，我们也几乎很少去采用那些借花仙佛的调用形式。但只我 们要明白JavaScript的这个"自我"与其他编程语言的"自我"是不同的，这是一个放下了的"自我"，这就是JavaScript特有的世界观。&lt;br&gt; &lt;br&gt; &lt;strong&gt;对象素描&lt;/strong&gt;&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 已经说了许多了许多话题了，但有一个很基本的问题我们忘了讨论，那就是：怎样建立对象？&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 在前面的示例中，我们已经涉及到了对象的建立了。我们使用了一种被称为JavaScript Object Notation(缩写JSON)的形式，翻译为中文就是"JavaScript对象表示法"。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; JSON为创建对象提供了非常简单的方法。例如，&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 创建一个没有任何属性的对象：&lt;br&gt; &lt;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);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;o&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;{};&lt;/span&gt;&lt;/div&gt;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 创建一个对象并设置属性及初始值：&lt;br&gt; &lt;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);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;person&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;{name:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Angel&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;age:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;18&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;married:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;};&lt;/span&gt;&lt;/div&gt;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 创建一个对象并设置属性和方法：&lt;br&gt; &lt;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);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;speaker&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;{text:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Hello&amp;nbsp;World&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;say:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(){alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.text)}};&lt;/span&gt;&lt;/div&gt;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 创建一个更复杂的对象，嵌套其他对象和对象数组等：&lt;br&gt; &lt;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);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;company&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Microsoft&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;product:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;softwares&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;chairman:&amp;nbsp;{name:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Bill&amp;nbsp;Gates&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;age:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;53&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;Married:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;},&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;employees:&amp;nbsp;[{name:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Angel&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;age:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;26&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;Married:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;},&amp;nbsp;{name:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Hanson&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;age:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;32&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;Marred:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}],&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;readme:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;()&amp;nbsp;{document.write(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.name&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;product&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.product);}&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;/span&gt;&lt;/div&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; JSON的形式就是用大括"{}"号包括起来的项目列表，每一个项目间并用逗号","分隔，而项目就是用冒号":"分隔的属性名和属性值。这是典型的字典 表示形式，也再次表明了 JavaScript里的对象就是字典结构。不管多么复杂的对象，都可以被一句JSON代码来创建并赋值。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;其实，JSON就是JavaScript对象最好的序列化形式，它比XML更简洁也更省空间。对象可以作为一个JSON形式的字符串，在网络间自 由传递和交换信息。而当需要将这个JSON字符串变成一个JavaScript对象时，只需要使用eval函数这个强大的数码转换引擎，就立即能得到一个 JavaScript内存对象。正是由于JSON的这种简单朴素的天生丽质，才使得她在AJAX舞台上成为璀璨夺目的明星。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;JavaScript就是这样，把面向对象那些看似复杂的东西，用及其简洁的形式表达出来。卸下对象浮华的浓妆，还对象一个眉目清晰！&lt;br&gt; &lt;br&gt; &lt;strong&gt;构造对象&lt;/strong&gt;&lt;br&gt; &amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 好了，接下我们来讨论一下对象的另一种创建方法。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 除JSON外，在JavaScript中我们可以使用new操作符结合一个函数的形式来创建对象。例如：&lt;br&gt; &lt;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);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;MyFunc()&amp;nbsp;{};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;定义一个空函数&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;anObj&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;MyFunc();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;使用new操作符，借助MyFun函数，就创建了一个对象&lt;/span&gt;&lt;/div&gt;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; JavaScript的这种创建对象的方式可真有意思，如何去理解这种写法呢？&lt;br&gt; &amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp; 其实，可以把上面的代码改写成这种等价形式：&lt;br&gt; &lt;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);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;MyFunc(){};&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;anObj&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;{};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;创建一个对象&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MyFunc.call(anObj);&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;将anObj对象作为this指针调用MyFunc函数&lt;/span&gt;&lt;/div&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 我们就可以这样理解，JavaScript先用new操作符创建了一个对象，紧接着就将这个对象作为this参数调用了后面的函数。其 实，JavaScript内部就是这么做的，而且任何函数都可以被这样调用！但从 "anObj = new MyFunc()" 这种形式，我们又看到一个熟悉的身影，C++和C#不就是这样创建对象的吗？原来，条条大路通灵山，殊途同归啊！&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 君看到此处也许会想，我们为什么不可以把这个MyFunc当作构造函数呢？恭喜你，答对了！JavaScript也是这么想的！请看下面的代码：&amp;nbsp;&lt;br&gt; &lt;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);"&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Person(name)&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;带参数的构造函数&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.name&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;name;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;将参数值赋给给this对象的属性&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.SayHello&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;()&amp;nbsp;{alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Hello,&amp;nbsp;I&amp;#39;m&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.name);};&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;给this对象定义一个SayHello方法。&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Employee(name,&amp;nbsp;salary)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;子构造函数&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Person.call(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;name);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;将this传给父构造函数&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;10&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.salary&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;salary;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;设置一个this的salary属性&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;11&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.ShowMeTheMoney&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;()&amp;nbsp;{alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.name&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;$&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.salary);};&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;添加ShowMeTheMoney方法。&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;12&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;13&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;14&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;BillGates&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Person(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Bill&amp;nbsp;Gates&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;用Person构造函数创建BillGates对象&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;15&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;SteveJobs&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Employee(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Steve&amp;nbsp;Jobs&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1234&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;用Empolyee构造函数创建SteveJobs对象&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;16&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;17&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BillGates.SayHello();&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;显示：I&amp;#39;m&amp;nbsp;Bill&amp;nbsp;Gates&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;18&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SteveJobs.SayHello();&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;显示：I&amp;#39;m&amp;nbsp;Steve&amp;nbsp;Jobs&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;19&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SteveJobs.ShowMeTheMoney();&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;显示：Steve&amp;nbsp;Jobs&amp;nbsp;$1234&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;20&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;21&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(BillGates.constructor&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Person);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;显示：true&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;22&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(SteveJobs.constructor&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Employee);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;显示：true&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;23&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;24&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(BillGates.SayHello&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;SteveJobs.SayHello);&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;显示：false&lt;/span&gt;&lt;/div&gt;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 这段代码表明，函数不但可以当作构造函数，而且还可以带参数，还可以为对象添加成员和方法。其中的第9行，Employee构造函数又将自己接收的 this作为参数调用Person构造函数，这就是相当于调用基类的构造函数。第21、22行还表明这样一个意思：BillGates是由Person构 造的，而SteveJobs是由Employee构造的。对象内置的constructor属性还指明了构造对象所用的具体函数！&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 其实，如果你愿意把函数当作"类"的话，她就是"类"，因为她本来就有"类"的那些特征。难道不是吗？她生出的儿子各个都有相同的特征，而且构造函数也与类同名嘛！&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 但要注意的是，用构造函数操作this对象创建出来的每一个对象，不但具有各自的成员数据，而且还具有各自的方法数据。换句话说，方法的代码体(体现函数 逻辑的数据)在每一个对象中都存在一个副本。尽管每一个代码副本的逻辑是相同的，但对象们确实是各自保存了一份代码体。上例中的最后一句说明了这一实事， 这也解释了JavaScript中的函数就是对象的概念。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 同一类的对象各自有一份方法代码显然是一种浪费。在传统的对象语言中，方法函数并不象JavaScript那样是个对象概念。即使也有象函数指针、方法指针或委托那样的变化形式，但其实质也是对同一份代码的引用。一般的对象语言很难遇到这种情况。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 不过，JavaScript语言有大的灵活性。我们可以先定义一份唯一的方法函数体，并在构造this对象时使用这唯一的函数对象作为其方法，就能共享方法逻辑。例如：&lt;br&gt; &lt;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);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;SayHello()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;先定义一份SayHello函数代码&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Hello,&amp;nbsp;I&amp;#39;m&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.name);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Person(name)&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;带参数的构造函数&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.name&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;name;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;将参数值赋给给this对象的属性&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.SayHello&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;SayHello;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;给this对象SayHello方法赋值为前面那份SayHello代码。&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;BillGates&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Person(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Bill&amp;nbsp;Gates&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;创建BillGates对象&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;SteveJobs&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Person(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Steve&amp;nbsp;Jobs&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;创建SteveJobs对象&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(BillGates.SayHello&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;SteveJobs.SayHello);&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;显示：true&lt;/span&gt;&lt;/div&gt;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;其中，最后一行的输出结果表明两个对象确实共享了一个函数对象。虽然，这段程序达到了共享了一份方法代码的目的，但却不怎么优雅。因为，定义 SayHello方法时反映不出其与Person类的关系。"优雅"这个词用来形容代码，也不知道是谁先提出来的。不过，这个词反映了程序员已经从追求代 码的正确、高效、可靠和易读等基础上，向着追求代码的美观感觉和艺术境界的层次发展，程序人生又多了些浪漫色彩。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp; 显然，JavaScript早想到了这一问题，她的设计者们为此提供了一个有趣的prototype概念。&lt;br&gt; &lt;br&gt; &lt;strong&gt;初看原型&lt;/strong&gt;&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; prototype源自法语，软件界的标准翻译为"原型"，代表事物的初始形态，也含有模型和样板的意义。JavaScript中的prototype概念恰如其分地反映了这个词的内含，我们不能将其理解为C++的prototype那种预先声明的概念。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; JavaScript的所有function类型的对象都有一个prototype属性。这个prototype属性本身又是一个object类型的对 象，因此我们也可以给这个prototype对象添加任意的属性和方法。既然prototype是对象的"原型"，那么由该函数构造出来的对象应该都会具 有这个"原型"的特性。事实上，在构造函数的prototype上定义的所有属性和方法，都是可以通过其构造的对象直接访问和调用的。也可以这么 说，prototype提供了一群同类对象共享属性和方法的机制。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 我们先来看看下面的代码：&lt;br&gt; &lt;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);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Person(name)&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.name&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;name;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;设置对象属性，每个对象各自一份属性数据&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Person.prototype.SayHello&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;()&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;给Person函数的prototype添加SayHello方法。&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Hello,&amp;nbsp;I&amp;#39;m&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.name);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;BillGates&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Person(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Bill&amp;nbsp;Gates&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;创建BillGates对象&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;SteveJobs&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Person(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Steve&amp;nbsp;Jobs&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;创建SteveJobs对象&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BillGates.SayHello();&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;通过BillGates对象直接调用到SayHello方法&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SteveJobs.SayHello();&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;通过SteveJobs对象直接调用到SayHello方法&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(BillGates.SayHello&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;SteveJobs.SayHello);&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;因为两个对象是共享prototype的SayHello，所以显示：true&lt;/span&gt;&lt;/div&gt;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 程序运行的结果表明，构造函数的prototype上定义的方法确实可以通过对象直接调用到，而且代码是共享的。显然，把方法设置到prototype的 写法显得优雅多了，尽管调用形式没有变，但逻辑上却体现了方法与类的关系，相对前面的写法，更容易理解和组织代码。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 那么，对于多层次类型的构造函数情况又如何呢？&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 我们再来看下面的代码：&lt;br&gt; &lt;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);"&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Person(name)&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;基类构造函数&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.name&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;name;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Person.prototype.SayHello&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;()&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;给基类构造函数的prototype添加方法&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Hello,&amp;nbsp;I&amp;#39;m&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.name);&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;10&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;11&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Employee(name,&amp;nbsp;salary)&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;子类构造函数&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;12&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;13&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Person.call(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;name);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;调用基类构造函数&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;14&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.salary&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;salary;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;15&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;16&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;17&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Employee.prototype&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Person();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;建一个基类的对象作为子类原型的原型，这里很有意思&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;18&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;19&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Employee.prototype.ShowMeTheMoney&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;()&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;给子类添构造函数的prototype添加方法&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;20&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;21&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.name&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;$&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.salary);&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;22&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;23&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;24&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;BillGates&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Person(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Bill&amp;nbsp;Gates&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;创建基类Person的BillGates对象&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;25&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;SteveJobs&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Employee(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Steve&amp;nbsp;Jobs&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1234&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;创建子类Employee的SteveJobs对象&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;26&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;27&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BillGates.SayHello();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;通过对象直接调用到prototype的方法&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;28&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SteveJobs.SayHello();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;通过子类对象直接调用基类prototype的方法，关注！&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;29&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SteveJobs.ShowMeTheMoney();&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;通过子类对象直接调用子类prototype的方法&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;30&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;31&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(BillGates.SayHello&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;SteveJobs.SayHello);&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;显示：true，表明prototype的方法是共享的&lt;/span&gt;&lt;/div&gt;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 这段代码的第17行，构造了一个基类的对象，并将其设为子类构造函数的prototype，这是很有意思的。这样做的目的就是为了第28行，通过子类对象也可以直接调用基类prototype的方法。为什么可以这样呢？&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 原来，在JavaScript中，prototype不但能让对象共享自己财富，而且prototype还有寻根问祖的天性，从而使得先辈们的遗产可以代 代相传。当从一个对象那里读取属性或调用方法时，如果该对象自身不存在这样的属性或方法，就会去自己关联的prototype对象那里寻找；如果 prototype没有，又会去prototype自己关联的前辈prototype那里寻找，直到找到或追溯过程结束为止。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 在JavaScript内部，对象的属性和方法追溯机制是通过所谓的prototype链来实现的。当用new操作符构造对象时，也会同时将构造函数的 prototype对象指派给新创建的对象，成为该对象内置的原型对象。对象内置的原型对象应该是对外不可见的，尽管有些浏览器(如Firefox)可以 让我们访问这个内置原型对象，但并不建议这样做。内置的原型对象本身也是对象，也有自己关联的原型对象，这样就形成了所谓的原型链。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 在原型链的最末端，就是Object构造函数prototype属性指向的那一个原型对象。这个原型对象是所有对象的最老祖先，这个老祖宗实现了诸如 toString等所有对象天生就该具有的方法。其他内置构造函数，如Function, Boolean, String, Date和RegExp等的prototype都是从这个老祖宗传承下来的，但他们各自又定义了自身的属性和方法，从而他们的子孙就表现出各自宗族的那些 特征。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 这不就是"继承"吗？是的，这就是"继承"，是JavaScript特有的"原型继承"。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; "原型继承"是慈祥而又严厉的。原形对象将自己的属性和方法无私地贡献给孩子们使用，也并不强迫孩子们必须遵从，允许一些顽皮孩子按自己的兴趣和爱好独立 行事。从这点上看，原型对象是一位慈祥的母亲。然而，任何一个孩子虽然可以我行我素，但却不能动原型对象既有的财产，因为那可能会影响到其他孩子的利益。 从这一点上看，原型对象又象一位严厉的父亲。我们来看看下面的代码就可以理解这个意思了：&lt;br&gt; &lt;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);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Person(name)&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.name&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;name;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Person.prototype.company&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Microsoft&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;原型的属性&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Person.prototype.SayHello&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;()&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;原型的方法&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Hello,&amp;nbsp;I&amp;#39;m&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.name&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;of&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.company);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;BillGates&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Person(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Bill&amp;nbsp;Gates&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BillGates.SayHello();&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;由于继承了原型的东西，规规矩矩输出：Hello,&amp;nbsp;I&amp;#39;m&amp;nbsp;Bill&amp;nbsp;Gates&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;SteveJobs&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Person(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Steve&amp;nbsp;Jobs&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SteveJobs.company&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Apple&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;设置自己的company属性，掩盖了原型的company属性&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SteveJobs.SayHello&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;()&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;实现了自己的SayHello方法，掩盖了原型的SayHello方法&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Hi,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.name&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;like&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.company&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;ha&amp;nbsp;ha&amp;nbsp;ha&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SteveJobs.SayHello();&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;都是自己覆盖的属性和方法，输出：Hi,&amp;nbsp;Steve&amp;nbsp;Jobs&amp;nbsp;like&amp;nbsp;Apple,&amp;nbsp;ha&amp;nbsp;ha&amp;nbsp;ha&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BillGates.SayHello();&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;SteveJobs的覆盖没有影响原型对象，BillGates还是按老样子输出&lt;/span&gt;&lt;/div&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 对象可以掩盖原型对象的那些属性和方法，一个构造函数原型对象也可以掩盖上层构造函数原型对象既有的属性和方法。这种掩盖其实只是在对象自己身上创建了新 的属性和方法，只不过这些属性和方法与原型对象的那些同名而已。JavaScript就是用这简单的掩盖机制实现了对象的"多态"性，与静态对象语言的虚 函数和重载(override)概念不谋而合。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;然而，比静态对象语言更神奇的是，我们可以随时给原型对象动态添加新的属性和方法，从而动态地扩展基类的功能特性。这在静态对象语言中是很难想象的。我们来看下面的代码：&lt;br&gt; &lt;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);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Person(name)&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.name&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;name;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Person.prototype.SayHello&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;()&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;建立对象前定义的方法&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Hello,&amp;nbsp;I&amp;#39;m&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.name);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;BillGates&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Person(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Bill&amp;nbsp;Gates&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;建立对象&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BillGates.SayHello();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Person.prototype.Retire&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;建立对象后再动态扩展原型的方法&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Poor&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.name&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;bye&amp;nbsp;bye!&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BillGates.Retire();&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;动态扩展的方法即可被先前建立的对象立即调用&lt;/span&gt;&lt;/div&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;阿弥佗佛，原型继承竟然可以玩出有这样的法术！&lt;br&gt; &lt;br&gt; &lt;strong&gt;原型扩展&lt;/strong&gt;&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;想必君的悟性极高，可能你会这样想：如果在JavaScript内置的那些如Object和Function等函数的prototype上添加些新的方法和属性，是不是就能扩展JavaScript的功能呢？&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;那么，恭喜你，你得到了！&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;在AJAX技术迅猛发展的今天，许多成功的AJAX项目的JavaScript运行库都大量扩展了内置函数的prototype功能。比如微软的 &lt;a href="http://ASP.NET"&gt;ASP.NET&lt;/a&gt; AJAX，就给这些内置函数及其prototype添加了大量的新特性，从而增强了JavaScript的功能。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;我们来看一段摘自&lt;font face="Verdana"&gt;MicrosoftAjax.debug.js中的代码：&lt;br&gt; &lt;/font&gt;&lt;br&gt; &lt;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);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;String.prototype.trim&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;String$trim()&amp;nbsp;{&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;(arguments.length&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;!==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;throw&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Error.parameterCount();&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.replace(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;^\s+|\s+$&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;g,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br&gt;  }&lt;/span&gt;&lt;/div&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;这段代码就是给内置String函数的prototype扩展了一个trim方法，于是所有的String类对象都有了trim方法了。有了这个 扩展，今后要去除字符串两段的空白，就不用再分别处理了，因为任何字符串都有了这个扩展功能，只要调用即可，真的很方便。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;当然，几乎很少有人去给Object的prototype添加方法，因为那会影响到所有的对象，除非在你的架构中这种方法的确是所有对象都需要的。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;前两年，微软在设计AJAX类库的初期，用了一种被称为"闭包"(&lt;font face="Verdana"&gt;closure&lt;/font&gt;)的技术来模拟"类"。其大致模型如下：&lt;br&gt; &lt;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);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Person(firstName,&amp;nbsp;lastName,&amp;nbsp;age)&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;私有变量：&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;_firstName&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;firstName;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;_lastName&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;lastName;&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;公共变量:&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.age&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;age;&lt;br&gt;  &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;方法：&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.getName&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;()&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(firstName&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;lastName);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.SayHello&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;()&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Hello,&amp;nbsp;I&amp;#39;m&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;firstName&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;lastName);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;BillGates&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Person(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Bill&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Gates&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;53&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;SteveJobs&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Person(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Steve&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Jobs&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;53&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BillGates.SayHello();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SteveJobs.SayHello();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(BillGates.getName()&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;BillGates.age);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(BillGates.firstName);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;这里不能访问到私有变量&lt;/span&gt;&lt;/div&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;很显然，这种模型的类描述特别象C#语言的描述形式，在一个构造函数里依次定义了私有成员、公共属性和可用的方法，显得非常优雅嘛。特别是"闭包"机制可以模拟对私有成员的保护机制，做得非常漂亮。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;所谓的"闭包"，就是在构造函数体内定义另外的函数作为目标对象的方法函数，而这个对象的方法函数反过来引用外层外层函数体中的临时变量。这使得 只要目标对象在生存期内始终能保持其方法，就能间接保持原构造函数体当时用到的临时变量值。尽管最开始的构造函数调用已经结束，临时变量的名称也都消失 了，但在目标对象的方法内却始终能引用到该变量的值，而且该值只能通这种方法来访问。即使再次调用相同的构造函数，但只会生成新对象和方法，新的临时变量 只是对应新的值，和上次那次调用的是各自独立的。的确很巧妙！&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;但是前面我们说过，给每一个对象设置一份方法是一种很大的浪费。还有，"闭包"这种间接保持变量值的机制，往往会给JavaSript的垃圾回收 器制造难题。特别是遇到对象间复杂的循环引用时，垃圾回收的判断逻辑非常复杂。无独有偶，IE浏览器早期版本确实存在JavaSript垃圾回收方面的内 存泄漏问题。再加上"闭包"模型在性能测试方面的表现不佳，微软最终放弃了"闭包"模型，而改用"原型"模型。正所谓"有得必有失"嘛。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;原型模型需要一个构造函数来定义对象的成员，而方法却依附在该构造函数的原型上。大致写法如下：&lt;br&gt; &lt;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);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;定义构造函数&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Person(name)&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.name&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;name;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;在构造函数中定义成员&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;方法定义到构造函数的prototype上&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Person.prototype.SayHello&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;()&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Hello,&amp;nbsp;I&amp;#39;m&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.name);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;子类构造函数&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Employee(name,&amp;nbsp;salary)&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Person.call(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;name);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;调用上层构造函数&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.salary&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;salary;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;扩展的成员&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;子类构造函数首先需要用上层构造函数来建立prototype对象，实现继承的概念&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Employee.prototype&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Person()&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;只需要其prototype的方法，此对象的成员没有任何意义！&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;子类方法也定义到构造函数之上&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Employee.prototype.ShowMeTheMoney&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;()&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.name&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;$&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.salary);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;BillGates&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Person(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Bill&amp;nbsp;Gates&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BillGates.SayHello();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;SteveJobs&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Employee(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Steve&amp;nbsp;Jobs&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1234&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SteveJobs.SayHello();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SteveJobs.ShowMeTheMoney();&lt;/span&gt;&lt;/div&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;原型类模型虽然不能模拟真正的私有变量，而且也要分两部分来定义类，显得不怎么"优雅"。不过，对象间的方法是共享的，不会遇到垃圾回收问题，而且性能优于"闭包"模型。正所谓"有失必有得"嘛。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;在原型模型中，为了实现类继承，必须首先将子类构造函数的prototype设置为一个父类的对象实例。创建这个父类对象实例的目的就是为 了构成原型链，以起到共享上层原型方法作用。但创建这个实例对象时，上层构造函数也会给它设置对象成员，这些对象成员对于继承来说是没有意义的。虽然，我 们也没有给构造函数传递参数，但确实创建了若干没有用的成员，尽管其值是undefined，这也是一种浪费啊。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;唉！世界上没有完美的事情啊！&lt;br&gt; &lt;br&gt; &lt;strong&gt;原型真谛&lt;br&gt; &lt;/strong&gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;正当我们感概万分时，天空中一道红光闪过，祥云中出现了观音菩萨。只见她手持&lt;font face="Verdana"&gt;玉净瓶，轻拂翠柳枝，洒下几滴甘露，顿时让JavaScript又添新的灵气。&lt;br&gt; &lt;/font&gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;观音洒下的甘露在JavaScript的世界里凝结成块，成为了一种称为"语法甘露"的东西。这种语法甘露可以让我们编写的代码看起来更象对象语言。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;要想知道这"语法甘露"为何物，就请君侧耳细听。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;在理解这些语法甘露之前，我们需要重新再回顾一下JavaScript构造对象的过程。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;我们已经知道，用 var anObject = new aFunction() 形式创建对象的过程实际上可以分为三步：第一步是建立一个新对象；第二步将该对象内置的原型对象设置为构造函数prototype引用的那个原型对象；第 三步就是将该对象作为this参数调用构造函数，完成成员设置等初始化工作。对象建立之后，对象上的任何访问和操作都只与对象自身及其原型链上的那串对象 有关，与构造函数再扯不上关系了。换句话说，构造函数只是在创建对象时起到介绍原型对象和初始化对象两个作用。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;那么，我们能否自己定义一个对象来当作原型，并在这个原型上描述类，然后将这个原型设置给新创建的对象，将其当作对象的类呢？我们又能否将这个原型中的一个方法当作构造函数，去初始化新建的对象呢？例如，我们定义这样一个原型对象：&lt;/p&gt; &lt;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);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Person&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;定义一个对象来作为原型类&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Create:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(name,&amp;nbsp;age)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;这个当构造函数&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.name&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;name;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.age&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;age;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SayHello:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;()&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;定义方法&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Hello,&amp;nbsp;I&amp;#39;m&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.name);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HowOld:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;()&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;定义方法&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.name&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;is&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.age&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;years&amp;nbsp;old.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;/span&gt;&lt;/div&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;这个JSON形式的写法多么象一个C#的类啊！既有构造函数，又有各种方法。如果可以用某种形式来创建对象，并将对象的内置的原型设置为上面这个"类"对象，不就相当于创建该类的对象了吗？&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;但遗憾的是，我们几乎不能访问到对象内置的原型属性！尽管有些浏览器可以访问到对象的内置原型，但这样做的话就只能限定了用户必须使用那种浏览器。这也几乎不可行。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;那么，我们可不可以通过一个函数对象来做媒介，利用该函数对象的prototype属性来中转这个原型，并用new操作符传递给新建的对象呢？&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;其实，象这样的代码就可以实现这一目标：&lt;/p&gt; &lt;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);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;anyfunc(){};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;定义一个函数躯壳&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;anyfunc.prototype&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Person;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;将原型对象放到中转站prototype&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;BillGates&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;anyfunc();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;新建对象的内置原型将是我们期望的原型对象&lt;/span&gt;&lt;/div&gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;不过，这个anyfunc函数只是一个躯壳，在使用过这个躯壳之后它就成了多余的东西了，而且这和直接使用构造函数来创建对象也没啥不同，有点不爽。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;可是，如果我们将这些代码写成一个通用函数，而那个函数躯壳也就成了函数内的函数，这个内部函数不就可以在外层函数退出作用域后自动消亡吗？而且，我们可以将原型对象作为通用函数的参数，让通用函数返回创建的对象。我们需要的就是下面这个形式：&lt;/p&gt; &lt;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);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;New(aClass,&amp;nbsp;aParams)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;通用创建函数&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;new_()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;定义临时的中转函数壳&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;aClass.Create.apply(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;aParams);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;调用原型中定义的的构造函数，中转构造逻辑及构造参数&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new_.prototype&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;aClass;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;准备中转原型对象&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;new_();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;返回建立最终建立的对象&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Person&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;定义的类&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Create:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(name,&amp;nbsp;age)&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.name&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;name;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.age&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;age;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SayHello:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;()&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Hello,&amp;nbsp;I&amp;#39;m&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.name);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HowOld:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;()&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.name&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;is&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.age&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;years&amp;nbsp;old.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;BillGates&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;New(Person,&amp;nbsp;[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Bill&amp;nbsp;Gates&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;53&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;]);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;调用通用函数创建对象，并以数组形式传递构造参数&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BillGates.SayHello();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BillGates.HowOld();&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(BillGates.constructor&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Object);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;输出：true&lt;/span&gt;&lt;/div&gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;这里的通用函数New()就是一个"语法甘露"！这个语法甘露不但中转了原型对象，还中转了构造函数逻辑及构造参数。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;有趣的是，每次创建完对象退出New函数作用域时，临时的new_函数对象会被自动释放。由于new_的prototype属性被设置为新的原型 对象，其原来的原型对象和new_之间就已解开了引用链，临时函数及其原来的原型对象都会被正确回收了。上面代码的最后一句证明，新创建的对象的 constructor属性返回的是Object函数。其实新建的对象自己及其原型里没有constructor属性，那返回的只是最顶层原型对象的构造 函数，即Object。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;有了New这个语法甘露，类的定义就很像C#那些静态对象语言的形式了，这样的代码显得多么文静而优雅啊！&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;当然，这个代码仅仅展示了"语法甘露"的概念。我们还需要多一些的语法甘露，才能实现用简洁而优雅的代码书写类层次及其继承关系。好了，我们再来看一个更丰富的示例吧：&lt;/p&gt; &lt;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);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;语法甘露：&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;object&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;定义小写的object基本类，用于实现最基础的方法等&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;isA:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(aType)&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;一个判断类与类之间以及对象与类之间关系的基础方法&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;self&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;while&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(self)&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;(self&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;aType)&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;self.Type;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Class(aBaseClass,&amp;nbsp;aClassDefine)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;创建类的函数，用于声明类及继承关系&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;class_()&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;创建类的临时函数壳&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.Type&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;aBaseClass;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;我们给每一个类约定一个Type属性，引用其继承的类&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;member&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;aClassDefine)&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[member]&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;aClassDefine[member];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;复制类的全部定义到当前创建的类&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class_.prototype&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;aBaseClass;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;class_();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;New(aClass,&amp;nbsp;aParams)&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;创建对象的函数，用于任意类的对象创建&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;new_()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;创建对象的临时函数壳&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.Type&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;aClass;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;我们也给每一个对象约定一个Type属性，据此可以访问到对象所属的类&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;(aClass.Create)&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;aClass.Create.apply(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;aParams);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;我们约定所有类的构造函数都叫Create，这和DELPHI比较相似&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new_.prototype&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;aClass;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;new_();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;语法甘露的应用效果：&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Person&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Class(object,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;派生至object基本类&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Create:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(name,&amp;nbsp;age)&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.name&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;name;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.age&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;age;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SayHello:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;()&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Hello,&amp;nbsp;I&amp;#39;m&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.name&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.age&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;years&amp;nbsp;old.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Employee&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;Class(Person,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;派生至Person类，是不是和一般对象语言很相似？&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Create:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(name,&amp;nbsp;age,&amp;nbsp;salary)&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Person.Create.call(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;name,&amp;nbsp;age);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;调用基类的构造函数&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.salary&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;salary;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ShowMeTheMoney:&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;()&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.name&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;$&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.salary);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;BillGates&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;New(Person,&amp;nbsp;[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Bill&amp;nbsp;Gates&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;53&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;]);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;SteveJobs&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;New(Employee,&amp;nbsp;[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Steve&amp;nbsp;Jobs&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;53&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1234&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;]);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BillGates.SayHello();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SteveJobs.SayHello();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SteveJobs.ShowMeTheMoney();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;LittleBill&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;New(BillGates.Type,&amp;nbsp;[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Little&amp;nbsp;Bill&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;6&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;]);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;根据BillGate的类型创建LittleBill&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LittleBill.SayHello();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(BillGates.isA(Person));&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;true&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(BillGates.isA(Employee));&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;false&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(SteveJobs.isA(Person));&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;true&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(Person.isA(Employee));&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;false&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(Employee.isA(Person));&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;true&lt;/span&gt;&lt;/div&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"语法甘露"不用太多，只要那么一点点，就能改观整个代码的易读性和流畅性，从而让代码显得更优雅。有了这些语法甘露，JavaScript就很像一般对象语言了，写起代码了感觉也就爽多了！&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;令人高兴的是，受这些甘露滋养的JavaScript程序效率会更高。因为其原型对象里既没有了毫无用处的那些对象级的成员，而且还不存在 constructor属性体，少了与构造函数间的牵连，但依旧保持了方法的共享性。这让JavaScript在追溯原型链和搜索属性及方法时，少费许多 工夫啊。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;我们就把这种形式称为"甘露模型"吧！其实，这种"甘露模型"的原型用法才是符合prototype概念的本意，才是的JavaScript原型的真谛！&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;想必微软那些设计AJAX架构的工程师看到这个甘露模型时，肯定后悔没有早点把AJAX部门从美国搬到咱中国的观音庙来，错过了观音菩萨的点化。 当然，我们也只能是在代码的示例中，把Bill Gates当作对象玩玩，真要让他放弃上帝转而皈依我佛肯定是不容易的，机缘未到啊！如果哪天你在微软新出的AJAX类库中看到这种甘露模型，那才是真正 的缘分！&lt;br&gt; &lt;br&gt; &lt;strong&gt;编程的快乐&lt;/strong&gt;&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;在软件工业迅猛发展的今天，各式各样的编程语言层出不穷，新语言的诞生，旧语言的演化，似乎已经让我们眼花缭乱。为了适应面向对象编程的潮 流，JavaScript语言也在向完全面向对象的方向发展，新的JavaScript标准已经从语义上扩展了许多面向对象的新元素。与此相反的是，许多 静态的对象语言也在向JavaScript的那种简洁而幽雅的方向发展。例如，新版本的C#语言就吸收了JSON那样的简洁表示法，以及一些其他形式的 JavaScript特性。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;我们应该看到，随着RIA(强互联应用)的发展和普及，AJAX技术也将逐渐淡出江湖，JavaScript也将最终消失或演化成其他形式的语 言。但不管编程语言如何发展和演化，编程世界永远都会在"数据"与"代码"这千丝万缕的纠缠中保持着无限的生机。只要我们能看透这一点，我们就能很容易地 学习和理解软件世界的各种新事物。不管是已熟悉的过程式编程，还是正在发展的函数式编程，以及未来量子纠缠态的大规模并行式编程，我们都有足够的法力来化 解一切复杂的难题。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;佛最后淡淡地说：只要我们放下那些表面的"类"，放下那些对象的"自我"，就能达到一种"对象本无根，类型亦无形"的境界，从而将自我融入到整个 宇宙的生命轮循环中。我们将没有自我，也没有自私的欲望，你就是我，我就是你，你中有我，我中有你。这时，我们再看这生机勃勃的编程世界时，我们的内心将 自然生起无限的慈爱之心，这种慈爱之心不是虚伪而是真诚的。关爱他人就是关爱自己，就是关爱这世界中的一切。那么，我们的心是永远快乐的，我们的程序是永 远快乐的，我们的类是永远快乐的，我们的对象也是永远快乐的。这就是编程的极乐！&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;说到这里，在座的比丘都犹如醍醐灌顶，心中豁然开朗。看看左边这位早已喜不自禁，再看看右边那位也是心花怒放。&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;蓦然回首时，唯见君拈花微笑...&lt;br&gt; &lt;br&gt; 原著：李战(leadzen).深圳 2008-2-23&lt;br&gt; &lt;p&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;亲笔签名&lt;/span&gt;&lt;/strong&gt;书专门店：&lt;a href="http://shop36954457.taobao.com/"&gt;http://shop36954457.taobao.com/&lt;/a&gt;&lt;/p&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-4327509114373609947?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/4327509114373609947/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=4327509114373609947' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/4327509114373609947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/4327509114373609947'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2009/01/javascript.html' title='悟透JavaScript'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-7466860175296049215</id><published>2008-12-27T12:22:00.004+08:00</published><updated>2008-12-27T12:43:01.478+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='推荐工具'/><title type='text'>Windows窗口的管理工具 - QTTabBar</title><content type='html'>同事lee问我，Windows资源管理能不能像Firefox的多标签页那样。我说没有！其实我也希望有这样的东西，来弥补Windows资源管理器的不好用。&lt;br /&gt;&lt;br /&gt;几分钟，lee兴奋的让我看他的现在的资源管理器：&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VX2cLG7TKU0/SVWu8k_dQVI/AAAAAAAAAYY/2viaE3KOLuE/s1600-h/QTTabbar.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; cursor: pointer; width: 477px; height: 239px;" src="http://3.bp.blogspot.com/_VX2cLG7TKU0/SVWu8k_dQVI/AAAAAAAAAYY/2viaE3KOLuE/s400/QTTabbar.jpg" alt="" id="BLOGGER_PHOTO_ID_5284322093534363986" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;原来lee找&lt;a href="http://google.cn"&gt;google&lt;/a&gt;到了一个叫 “ QTTabBar”的东西。QTTabBar是windows窗口的管理工具。它的主要功能为资源管理器增加像多页面浏览器一样的标签，方便操作，方便窗口切换。我以前用过TotalCommand 或FreeCommand之类的管理工具，可是放弃了，因为你每次好要先打开他。&lt;br /&gt;&lt;br /&gt;QTTabBar不一样，你还是和平常一样打开文件夹或我的电脑。你发现所以打开的文件夹都以Tab的形式显示在一个窗口。这就意味着你的任务栏，永远只要一个文件夹。&lt;br /&gt;&lt;br /&gt;感慨，问什么windows不把自己的资源管理器做得和QTTabBar一样好用？&lt;br /&gt;&lt;br /&gt;用用吧，相信你会喜欢的。&lt;br /&gt;&lt;br /&gt;这里的文字说的更详细，如果你想更详细的了解&lt;br /&gt;&lt;a href="http://www.x-force.cn/article.asp?id=357"&gt;http://www.x-force.cn/article.asp?id=357&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-7466860175296049215?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/7466860175296049215/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=7466860175296049215' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/7466860175296049215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/7466860175296049215'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/12/windows-qttabbar.html' title='Windows窗口的管理工具 - QTTabBar'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_VX2cLG7TKU0/SVWu8k_dQVI/AAAAAAAAAYY/2viaE3KOLuE/s72-c/QTTabbar.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-1406373187047091324</id><published>2008-12-11T20:04:00.002+08:00</published><updated>2008-12-11T20:24:26.250+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>检查eval的性能</title><content type='html'>利用PHP里的&lt;span style="font-weight: bold;"&gt;microtime()&lt;/span&gt;函数，检查eval的性能:&lt;br /&gt;&lt;blockquote&gt;function microtime_float() {&lt;br /&gt;          list($usec, $sec) = explode(" ", microtime());&lt;br /&gt;          return (float)$usec + (float)$sec;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function add(i){&lt;br /&gt;    $abc *= 12345.1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;echo $start_time = microtime_float();&lt;br /&gt;$abc = 23231;&lt;br /&gt;$code = '$abc *= 12345.1;';&lt;br /&gt;for($i=0; $i&lt; 1000; $i++) {       &lt;br /&gt;    eval($code);&lt;br /&gt;} &lt;br /&gt;echo $end_time = microtime_float();      &lt;br /&gt;echo '&lt;br/&gt;' . $end_time - $start_time;&lt;br /&gt;&lt;br /&gt;$abc = 23231;&lt;br /&gt;echo $start_time = microtime_float();&lt;br /&gt;for($i=0; $i &lt; 1000; $i++) {&lt;br /&gt;    $this-&gt;add($abc);&lt;br /&gt;}&lt;br /&gt;echo $end_time = microtime_float();&lt;br /&gt;echo  '&lt;br/&gt;' . $end_time - $start_time;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-1406373187047091324?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/1406373187047091324/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=1406373187047091324' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/1406373187047091324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/1406373187047091324'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/12/eval.html' title='检查eval的性能'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-7441092357434565248</id><published>2008-12-10T17:08:00.002+08:00</published><updated>2008-12-10T17:11:28.125+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web http'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>HTTP 协议基础</title><content type='html'>HTTP（HyperTextTransferProtocol）是超文本传输协议的缩写，它用于传送WWW方式的数据，关于HTTP协议的详细内容请参考RFC2616。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求，请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应，相应的内容包括消息协议的版本，成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。&lt;br /&gt;&lt;br /&gt;通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行，一个或者多个头域，一个只是头域结束的空行和可选的消息体组成。HTTP的头域包括通用头，请求头，响应头和实体头四个部分。每个头域由一个域名，冒号（:）和域值三部分组成。域名是大小写无关的，域值前可以添加任何数量的空格符，头域可以被扩展为多行，在每行开始处，使用至少一个空格或制表符。&lt;br /&gt;&lt;br /&gt;通用头域&lt;br /&gt;&lt;br /&gt;    通用头域包含请求和响应消息都支持的头域，通用头域包含Cache-Control、 Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。对通用头域的扩展要求通讯双方都支持此扩展，如果存在不支持的通用头域，一般将会作为实体头域处理。下面简单介绍几个在UPnP消息中使用的通用头域。&lt;br /&gt;&lt;br /&gt;Cache-Control头域&lt;br /&gt;&lt;br /&gt;    Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置 Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、 max-stale、min-fresh、only-if-cached，响应消息中的指令包括public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age。各个消息中的指令含义如下：&lt;br /&gt;&lt;br /&gt;    Public指示响应可被任何缓存区缓存。&lt;br /&gt;&lt;br /&gt;    Private指示对于单个用户的整个或部分响应消息，不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息，此响应消息对于其他用户的请求无效。&lt;br /&gt;&lt;br /&gt;    no-cache指示请求或响应消息不能缓存&lt;br /&gt;&lt;br /&gt;    no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。&lt;br /&gt;&lt;br /&gt;    max-age指示客户机可以接收生存期不大于指定时间（以秒为单位）的响应。&lt;br /&gt;&lt;br /&gt;    min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。&lt;br /&gt;&lt;br /&gt;    max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值，那么客户机可以接收超出超时期指定值之内的响应消息。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Date头域&lt;br /&gt;&lt;br /&gt;    Date头域表示消息发送的时间，时间的描述格式由rfc822定义。例如，Date:Mon,31Dec200104:25:57GMT。Date描述的时间表示世界标准时，换算成本地时间，需要知道用户所在的时区。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Pragma头域&lt;br /&gt;&lt;br /&gt;    Pragma头域用来包含实现特定的指令，最常用的是Pragma:no-cache。在HTTP/1.1协议中，它的含义和Cache- Control:no-cache相同。&lt;br /&gt;&lt;br /&gt;    请求消息&lt;br /&gt;&lt;br /&gt;    请求消息的第一行为下面的格式：&lt;br /&gt;&lt;br /&gt;    MethodSPRequest-URISPHTTP-VersionCRLFMethod 表示对于Request-URI完成的方法，这个字段是大小写敏感的，包括OPTIONS、GET、HEAD、POST、PUT、DELETE、 TRACE。方法GET和HEAD应该被所有的通用WEB服务器支持，其他所有方法的实现是可选的。GET方法取回由Request-URI标识的信息。 HEAD方法也是取回由Request-URI标识的信息，只是可以在响应时，不返回消息体。POST方法可以请求服务器接收包含在请求中的实体信息，可以用于提交表单，向新闻组、BBS、邮件群组和数据库发送消息。&lt;br /&gt;&lt;br /&gt;    SP表示空格。Request-URI遵循URI格式，在此字段为星号（*）时，说明请求并不用于某个特定的资源地址，而是用于服务器本身。 HTTP- Version表示支持的HTTP版本，例如为HTTP/1.1。CRLF表示换行回车符。请求头域允许客户端向服务器传递关于请求或者关于客户机的附加信息。请求头域可能包含下列字段Accept、Accept-Charset、Accept- Encoding、Accept-Language、Authorization、From、Host、If-Modified-Since、If- Match、If-None-Match、If-Range、If-Range、If-Unmodified-Since、Max-Forwards、 Proxy-Authorization、Range、Referer、User-Agent。对请求头域的扩展要求通讯双方都支持，如果存在不支持的请求头域，一般将会作为实体头域处理。&lt;br /&gt;&lt;br /&gt;    典型的请求消息：&lt;br /&gt;&lt;br /&gt;    GET http://download.microtool.de:80/somedata.exe&lt;br /&gt;    Host: download.microtool.de&lt;br /&gt;    Accept:*/*&lt;br /&gt;    Pragma: no-cache&lt;br /&gt;    Cache-Control: no-cache&lt;br /&gt;    Referer: http://download.microtool.de/&lt;br /&gt;    User-Agent:Mozilla/4.04[en](Win95;I;Nav)&lt;br /&gt;    Range:bytes=554554-&lt;br /&gt;&lt;br /&gt;    上例第一行表示HTTP客户端（可能是浏览器、下载程序）通过GET方法获得指定URL下的文件。棕色的部分表示请求头域的信息，绿色的部分表示通用头部分。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Host头域&lt;br /&gt;&lt;br /&gt;    Host头域指定请求资源的Intenet主机和端口号，必须表示请求url的原始服务器或网关的位置。HTTP/1.1请求必须包含主机头域，否则系统会以400状态码返回。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Referer头域&lt;br /&gt;&lt;br /&gt;    Referer头域允许客户端指定请求uri的源资源地址，这可以允许服务器生成回退链表，可用来登陆、优化cache等。他也允许废除的或错误的连接由于维护的目的被追踪。如果请求的uri没有自己的uri地址，Referer不能被发送。如果指定的是部分uri地址，则此地址应该是一个相对地址。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Range头域&lt;br /&gt;&lt;br /&gt;    Range头域可以请求实体的一个或者多个子范围。例如，&lt;br /&gt;&lt;br /&gt;    表示头500个字节：bytes=0-499&lt;br /&gt;&lt;br /&gt;    表示第二个500字节：bytes=500-999&lt;br /&gt;&lt;br /&gt;    表示最后500个字节：bytes=-500&lt;br /&gt;&lt;br /&gt;    表示500字节以后的范围：bytes=500-&lt;br /&gt;&lt;br /&gt;    第一个和最后一个字节：bytes=0-0,-1&lt;br /&gt;&lt;br /&gt;    同时指定几个范围：bytes=500-600,601-999&lt;br /&gt;&lt;br /&gt;    但是服务器可以忽略此请求头，如果无条件GET包含Range请求头，响应会以状态码206（PartialContent）返回而不是以200 （OK）。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;User-Agent头域&lt;br /&gt;&lt;br /&gt;    User-Agent头域的内容包含发出请求的用户信息。&lt;br /&gt;&lt;br /&gt;    响应消息&lt;br /&gt;&lt;br /&gt;    响应消息的第一行为下面的格式：&lt;br /&gt;&lt;br /&gt;    HTTP-VersionSPStatus-CodeSPReason-PhraseCRLF&lt;br /&gt;&lt;br /&gt;    HTTP-Version表示支持的HTTP版本，例如为HTTP/1.1。Status- Code是一个三个数字的结果代码。Reason-Phrase给Status-Code提供一个简单的文本描述。Status-Code主要用于机器自动识别，Reason-Phrase主要用于帮助用户理解。Status-Code的第一个数字定义响应的类别，后两个数字没有分类的作用。第一个数字可能取5个不同的值：&lt;br /&gt;&lt;br /&gt;    1xx:信息响应类，表示接收到请求并且继续处理&lt;br /&gt;&lt;br /&gt;    2xx:处理成功响应类，表示动作被成功接收、理解和接受&lt;br /&gt;&lt;br /&gt;    3xx:重定向响应类，为了完成指定的动作，必须接受进一步处理&lt;br /&gt;&lt;br /&gt;    4xx:客户端错误，客户请求包含语法错误或者是不能正确执行&lt;br /&gt;&lt;br /&gt;    5xx:服务端错误，服务器不能正确执行一个正确的请求&lt;br /&gt;&lt;br /&gt;    响应头域允许服务器传递不能放在状态行的附加信息，这些域主要描述服务器的信息和 Request-URI进一步的信息。响应头域包含Age、Location、Proxy-Authenticate、Public、Retry- After、Server、Vary、Warning、WWW-Authenticate。对响应头域的扩展要求通讯双方都支持，如果存在不支持的响应头域，一般将会作为实体头域处理。&lt;br /&gt;&lt;br /&gt;    典型的响应消息：&lt;br /&gt;&lt;br /&gt;    HTTP/1.0200OK&lt;br /&gt;&lt;br /&gt;    Date:Mon,31Dec200104:25:57GMT&lt;br /&gt;&lt;br /&gt;    Server:Apache/1.3.14(Unix)&lt;br /&gt;&lt;br /&gt;    Content-type:text/html&lt;br /&gt;&lt;br /&gt;    Last-modified:Tue,17Apr200106:46:28GMT&lt;br /&gt;&lt;br /&gt;    Etag:"a030f020ac7c01:1e9f"&lt;br /&gt;&lt;br /&gt;    Content-length:39725426&lt;br /&gt;&lt;br /&gt;    Content-range:bytes554554-40279979/40279980&lt;br /&gt;&lt;br /&gt;    上例第一行表示HTTP服务端响应一个GET方法。棕色的部分表示响应头域的信息，绿色的部分表示通用头部分，红色的部分表示实体头域的信息。&lt;br /&gt;&lt;br /&gt;    Location响应头&lt;br /&gt;&lt;br /&gt;    Location响应头用于重定向接收者到一个新URI地址。&lt;br /&gt;&lt;br /&gt;    Server响应头&lt;br /&gt;&lt;br /&gt;    Server响应头包含处理请求的原始服务器的软件信息。此域能包含多个产品标识和注释，产品标识一般按照重要性排序。&lt;br /&gt;&lt;br /&gt;    实体&lt;br /&gt;&lt;br /&gt;    请求消息和响应消息都可以包含实体信息，实体信息一般由实体头域和实体组成。实体头域包含关于实体的原信息，实体头包括Allow、 Content- Base、Content-Encoding、Content-Language、 Content-Length、Content-Location、Content-MD5、Content-Range、Content-Type、 Etag、Expires、Last-Modified、extension-header。extension-header允许客户端定义新的实体头，但是这些域可能无法未接受方识别。实体可以是一个经过编码的字节流，它的编码方式由Content-Encoding或Content-Type定义，它的长度由Content-Length或Content-Range定义。&lt;br /&gt;&lt;br /&gt;    Content-Type实体头&lt;br /&gt;&lt;br /&gt;    Content-Type实体头用于向接收方指示实体的介质类型，指定HEAD方法送到接收方的实体介质类型，或GET方法发送的请求介质类型 Content-Range实体头&lt;br /&gt;&lt;br /&gt;    Content-Range实体头用于指定整个实体中的一部分的插入位置，他也指示了整个实体的长度。在服务器向客户返回一个部分响应，它必须描述响应覆盖的范围和整个实体长度。一般格式：&lt;br /&gt;&lt;br /&gt;    Content-Range:bytes-unitSPfirst-byte-pos-last-byte-pos/entity-legth&lt;br /&gt;&lt;br /&gt;    例如，传送头500个字节次字段的形式：Content-Range:bytes0- 499/1234如果一个http消息包含此节（例如，对范围请求的响应或对一系列范围的重叠请求），Content-Range表示传送的范围， Content-Length表示实际传送的字节数。&lt;br /&gt;&lt;br /&gt;    Last-modified实体头&lt;br /&gt;&lt;br /&gt;    Last-modified实体头指定服务器上保存内容的最后修订时间。&lt;br /&gt;&lt;br /&gt;转自: http://sunqian.csu.edu.cn/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-7441092357434565248?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/7441092357434565248/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=7441092357434565248' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/7441092357434565248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/7441092357434565248'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/12/http_10.html' title='HTTP 协议基础'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-3547725943817055191</id><published>2008-12-10T16:51:00.002+08:00</published><updated>2008-12-10T17:12:40.427+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>隐藏Apache和PHP版本信息</title><content type='html'>为了安全要将Apache及 PHP 的版本隐藏，可以用以下方法:&lt;br /&gt;Apache:&lt;br /&gt;&lt;br /&gt;开启 httpd.conf，加入以下两行:&lt;br /&gt;&lt;br /&gt;ServerTokens ProductOnly&lt;br /&gt;&lt;br /&gt;ServerSignature Off&lt;br /&gt;&lt;br /&gt;PHP: 隐藏 PHP 版本就是隐藏 "X-Powered-By: PHP/5.1.2-1+b1" 这个，开启 php.ini，加入: expose_php = Off 完成以上两个设定后，重新启动 Apache 即可。&lt;br /&gt;&lt;br /&gt;另外，讲几个最基本的php的安全设置&lt;br /&gt;&lt;br /&gt;disable_functions = system,exec,shell_exec,passthru,popen,dl,phpinfo&lt;br /&gt;&lt;br /&gt;display_errors = Off&lt;br /&gt;&lt;br /&gt;allow_url_fopen = Off&lt;br /&gt;&lt;br /&gt;safe_mode = On&lt;br /&gt;&lt;br /&gt;open_basedir = /usr/local/httpd/htdocs/dir1:/usr/local/httpd/htdocs/dir2&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#目录权限控制，dir1中的php程序就无法访问dir2中的内容。反过来也不行&lt;br /&gt;&lt;br /&gt;转载自：http://www.php-oa.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-3547725943817055191?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/3547725943817055191/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=3547725943817055191' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/3547725943817055191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/3547725943817055191'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/12/httpwww.html' title='隐藏Apache和PHP版本信息'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-4986500641477550445</id><published>2008-12-10T12:56:00.006+08:00</published><updated>2008-12-10T13:43:41.193+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>HTTP压缩</title><content type='html'>&lt;h3&gt;关于HTTP压缩&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;HTTP压缩是一个种从服务器端发送包含压缩格式的HTTP响应消息给发出请求的浏览器。这项技术假设，Web服务器有能力编码输出的内容，而浏览器有能 力解码收到的内容。HTTP压缩节省了服务器传输数据量的时间和网页加载时间。HTTP压缩使用公共领域的压缩算法在服务器端进行编码&lt;abbr title="超文本标记语言"&gt;的HTML&lt;/abbr&gt;语言&lt;abbr title="层叠样式表"&gt;，&lt;/abbr&gt;JavaScript ，CSS和其他文件格式。这种基于标准的方法进行压缩的内容已被纳入HTTP/1.1规范。这意味着现代的支持HTTP/1.1协议的Web浏览器，即他们可以会自动在用户端解码压缩文件。&lt;br /&gt;&lt;h3&gt; 客户端发送请求到服务器 &lt;/h3&gt; 当一个Web浏览器加载一个网页，它会打开一个连接并发送一个HTTP请求到Web服务器。 &lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt;一个典型的HTTP请求看起来像这样：&lt;br /&gt;&lt;a id="black" name="client_request"&gt;&lt;/a&gt;&lt;blockquote&gt;&lt;a id="black" name="client_request"&gt;GET /index.html HTTP/1.1&lt;/a&gt;&lt;br /&gt;&lt;a id="black" name="client_request"&gt; Host: www.http-compression.com&lt;/a&gt;&lt;br /&gt;&lt;a id="black" name="client_request"&gt; Accept-Encoding: gzip&lt;/a&gt;&lt;br /&gt;&lt;a id="black" name="client_request"&gt; User-Agent: Firefox/1.0&lt;/a&gt;&lt;/blockquote&gt;&lt;br /&gt;从上面这个请求中，我们可以读出这样的信息：浏览器要访问在&lt;a id="black" name="client_request"&gt;www.http-compression.com（主机）的 &lt;/a&gt;index.html (请求对象)，浏览器自身的信息是&lt;a id="black" name="client_request"&gt;“Firefox/1.0”，并声明自己可以读懂响应的gzip压缩格式。&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;服务器发送被压缩的响应到客户端&lt;/h3&gt;经过分析和处理客户端的请求，Web服务器可能会发送压缩格式的HTTP响应。然后一个典型的HTTP响应看起来像这样：&lt;br /&gt;&lt;a id="black" name="server_response"&gt;&lt;/a&gt;&lt;blockquote&gt;&lt;a id="black" name="server_response"&gt;HTTP/1.1 200 OK&lt;/a&gt;&lt;br /&gt;&lt;a id="black" name="server_response"&gt; Server: Apache&lt;/a&gt;&lt;br /&gt;&lt;a id="black" name="server_response"&gt; Content-Type: text/html&lt;/a&gt;&lt;br /&gt;&lt;a id="black" name="server_response"&gt; Content-Encoding: gzip&lt;/a&gt;&lt;br /&gt;&lt;a id="black" name="server_response"&gt; Content-Length: 26395&lt;/a&gt;&lt;br /&gt;&lt;a id="black" name="server_response"&gt; &lt;/a&gt;&lt;br /&gt;&lt;a id="black" name="server_response"&gt; [GZIP COMPRESSED DATA]&lt;/a&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;从上面这个响应中，我们可以包含这些信息：Web服务器告诉浏览器状态代码200 ，请求的内容没有问题（OK）。下一行， Web服务器标识自己是Apache 。内容类型”表明这是一个HTML文件。反应标题“内容编码响应头&lt;a id="black" name="server_response"&gt; "Content-Encoding"&lt;/a&gt;告之浏览器，响应回的内容是&lt;a href="http://64.233.189.100/translate_c?hl=zh-CN&amp;amp;u=http://www.http-compression.com/&amp;amp;usg=ALkJrhj6HIWEbA7AkOzaKsW6MEi-2GYH2w#gzip"&gt;gzip格式压缩&lt;/a&gt; 。&lt;a id="black" name="server_response"&gt;Content-Length是内容的大小&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Web服务器支持&lt;/h3&gt;&lt;br /&gt;Apache 1.x 通过安装一些module 可以获得支持，Apache 2.x里是内在支持&lt;br /&gt;IIS 在4.0上对其支持的非常不好，建议不要用。IIS5.0好一点。IIS6.0支持的很好了。&lt;br /&gt;新兴起的web server，像 lighttpd 、nginx 支持。&lt;br /&gt;&lt;h3&gt;浏览器支持&lt;/h3&gt;&lt;a id="black" name="msie"&gt;Microsoft Internet Explorer&lt;/a&gt; 4.0 +&lt;a id="black" name="firefox"&gt;&lt;br /&gt;&lt;br /&gt;Mozilla Firefox&lt;/a&gt;&lt;br /&gt;&lt;a id="black" name="netscape"&gt;&lt;br /&gt;Netscape Navigator&lt;/a&gt; 4.06+&lt;br /&gt;&lt;a id="black" name="opera"&gt;&lt;br /&gt;Opera &lt;/a&gt;5.12+&lt;br /&gt;&lt;br /&gt;现在主流的浏览器对HTTP压缩的支持都没有问题，可以放心的使用。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;参考: &lt;a href="http://www.http-compression.com/"&gt;http://www.http-compression.com/&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-4986500641477550445?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/4986500641477550445/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=4986500641477550445' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/4986500641477550445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/4986500641477550445'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/12/http.html' title='HTTP压缩'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-3316924279062469838</id><published>2008-12-09T15:05:00.004+08:00</published><updated>2008-12-09T15:19:01.703+08:00</updated><title type='text'>看来是要出名了</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VX2cLG7TKU0/ST4ZpLH0voI/AAAAAAAAAU8/13c9Skdw9Qw/s1600-h/91642095295.jpg"&gt;&lt;img style="cursor: pointer; width: 479px; height: 342px;" src="http://1.bp.blogspot.com/_VX2cLG7TKU0/ST4ZpLH0voI/AAAAAAAAAU8/13c9Skdw9Qw/s400/91642095295.jpg" alt="" id="BLOGGER_PHOTO_ID_5277684008475737730" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bbs.duowan.com/thread-13188328-1-1.html"&gt;http://bbs.duowan.com/thread-13188328-1-1.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;由于宣传团队的“疏忽”，把我一起宣传了出去。呵呵，不知道有人会留意到？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-3316924279062469838?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/3316924279062469838/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=3316924279062469838' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/3316924279062469838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/3316924279062469838'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/12/blog-post.html' title='看来是要出名了'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_VX2cLG7TKU0/ST4ZpLH0voI/AAAAAAAAAU8/13c9Skdw9Qw/s72-c/91642095295.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-7087825772382480736</id><published>2008-12-06T11:20:00.006+08:00</published><updated>2008-12-06T12:32:50.493+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><title type='text'>特立独行的ASP.NET</title><content type='html'>最近，要处理一个ASP.NET项目的改进。于是，不得不花些时间来了解这个特立独行的东西。是的，你肯定也认为我是属于java或PHP类。没错，不过我是从Ruby on rails 开始了解这一切的。&lt;br /&gt;&lt;br /&gt;相信很多跟我一样的人，都会认为ASP.NET是个异类。 因为他不是我们所熟知的MVC (ruby onrails, zend framework,java struts...) 。 那么他是什么? &lt;span style="font-weight: bold;"&gt;WebForm&lt;/span&gt;。在&lt;span style="font-weight: bold;"&gt;WebForm &lt;/span&gt;下你看不清什么是控制器，也迷惑每个.aspx文件里都会自动生成一个from，而这就是webForm的开发方式。和我们所熟知的mvc框架没有任何什么相似的地方。以前，可能在选择框架的时候，评估的是性能问题和开发效率，即便是从php 换到ror。你都觉得不是什么问题。因为掌握一门语言，一周半个月足够了。现在要你换到ASP.NET这种webform的开发方式上来，oh, god！你得从头再来。首先心理上就接受不了。&lt;br /&gt;&lt;br /&gt;关于webform 和MVC的唇枪舌战，我就不多说了。&lt;br /&gt;你可以看看 &lt;a id="AjaxHolder_ctl01_TitleUrl" class="postTitle2" href="http://www.cnblogs.com/szw/archive/2007/12/22/1010449.html"&gt;为 MVC 和 Web Form 正名的一份“大字报”&lt;/a&gt; 和&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;a id="AjaxHolder_ctl01_TitleUrl" class="postTitle2" href="http://www.cnblogs.com/dreamstec/archive/2008/02/12/1067292.html"&gt;关于"WebForm和MVC"&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;不过，微软也意识到了，他所提供的ASP.NET的技术再“牛”，也是和WEB世界不想符合的。于是乎，“他们又回归到”&lt;a href="http://weblogs.asp.net/scottgu/archive/2008/10/16/asp-net-mvc-beta-released.aspx"&gt;ASP.NET MVC框架&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VX2cLG7TKU0/STn-l18bZJI/AAAAAAAAAU0/_nVItmNf370/s1600-h/step1.png"&gt;&lt;img style="cursor: pointer; width: 496px; height: 215px;" src="http://2.bp.blogspot.com/_VX2cLG7TKU0/STn-l18bZJI/AAAAAAAAAU0/_nVItmNf370/s400/step1.png" alt="" id="BLOGGER_PHOTO_ID_5276528364530394258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;看到这样的结构，我们应该欣慰很多。不过ASP.NET MVC框架只在&lt;span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;.NET 3.5 和.NET 3.5 SP1支持。&lt;br /&gt;&lt;br /&gt;可惜了，我的这个&lt;a href="http://www.formidas.com/"&gt;formidas.com&lt;/a&gt;（&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.formidas.com/"&gt;&lt;span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;股票评估&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;）只能采用WebForm的方式。&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-7087825772382480736?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/7087825772382480736/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=7087825772382480736' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/7087825772382480736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/7087825772382480736'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/12/aspnet.html' title='特立独行的ASP.NET'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VX2cLG7TKU0/STn-l18bZJI/AAAAAAAAAU0/_nVItmNf370/s72-c/step1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-2283355999262513944</id><published>2008-11-21T18:18:00.010+08:00</published><updated>2008-11-21T19:18:13.073+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web http'/><title type='text'>HTTP状态码参考</title><content type='html'>&lt;style&gt;table.dataintable {border:1px solid #888888;border-collapse:collapse;font-family:"Courier New",Courier,monospace;margin-top:10px;width:100%;}table.dataintable pre {width:auto;margin:0;padding:0;border:0;background-color:transparent;}table.dataintable th {padding:5px 15px 5px 5px;background-color:#ccc;border:1px solid #888;}table.dataintable td {vertical-align:text-top;padding:5px 15px 5px 5px;background-color:#efefef;border:1px solid #aaa;}table.dataintable p {margin:0 0 2px 0;}&lt;/style&gt;  &lt;strong&gt;当浏览器从 web 服务器请求服务时，可能会发生错误。&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;从而有可能会返回下面的一系列状态消息：&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;1xx: 信息&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;table class="dataintable"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th style="width: 40%;"&gt;消息:&lt;/th&gt;&lt;th style="width: 60%;"&gt;描述:&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;100 Continue&lt;/td&gt;&lt;td&gt;服务器仅接收到部分请求，但是一旦服务器并没有拒绝该请求，客户端应该继续发送其余的请求。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;101 Switching Protocols&lt;/td&gt;&lt;td&gt;服务器转换协议：服务器将遵从客户的请求转换到另外一种协议。&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;2xx: 成功&lt;/span&gt;&lt;div&gt;&lt;table class="dataintable"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th style="width: 40%;"&gt;消息:&lt;/th&gt;&lt;th style="width: 60%;"&gt;描述:&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;200 OK&lt;/td&gt;&lt;td&gt;请求成功（其后是对GET和POST请求的应答文档。）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;201 Created&lt;/td&gt;&lt;td&gt;请求被创建完成，同时新的资源被创建。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;202 Accepted&lt;/td&gt;&lt;td&gt;供处理的请求已被接受，但是处理未完成。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;203 Non-authoritative Information&lt;/td&gt;&lt;td&gt;文档已经正常地返回，但一些应答头可能不正确，因为使用的是文档的拷贝。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;204 No Content&lt;/td&gt;&lt;td&gt;没有新文档。浏览器应该继续显示原来的文档。如果用户定期地刷新页面，而Servlet可以确定用户文档足够新，这个状态代码是很有用的。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;205 Reset Content&lt;/td&gt;&lt;td&gt;没有新文档。但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;206 Partial Content&lt;/td&gt;&lt;td&gt;客户发送了一个带有Range头的GET请求，服务器完成了它。&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;3xx: 重定向&lt;/span&gt;&lt;table class="dataintable"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th style="width: 40%;"&gt;消息:&lt;/th&gt;&lt;th style="width: 60%;"&gt;描述:&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;300 Multiple Choices&lt;/td&gt;&lt;td&gt;多重选择。链接列表。用户可以选择某链接到达目的地。最多允许五个地址。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;301 Moved Permanently&lt;/td&gt;&lt;td&gt;所请求的页面已经转移至新的url。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;302 Found&lt;/td&gt;&lt;td&gt;所请求的页面已经临时转移至新的url。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;303 See Other&lt;/td&gt;&lt;td&gt;所请求的页面可在别的url下被找到。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;304 Not Modified&lt;/td&gt;&lt;td&gt;未按预期修改文档。客户端有缓冲的文档并发出了一个条件性的请求（一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档）。服务器告诉客户，原来缓冲的文档还可以继续使用。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;305 Use Proxy&lt;/td&gt;&lt;td&gt;客户请求的文档应该通过Location头所指明的代理服务器提取。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;306 &lt;i&gt;Unused&lt;/i&gt;&lt;/td&gt;&lt;td&gt;此代码被用于前一版本。目前已不再使用，但是代码依然被保留。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;307 Temporary Redirect&lt;/td&gt;&lt;td&gt;被请求的页面已经临时移至新的url。&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;4xx: 客户端错误&lt;/span&gt;&lt;table class="dataintable"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th style="width: 40%;"&gt;消息:&lt;/th&gt;&lt;th style="width: 60%;"&gt;描述:&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;400 Bad Request&lt;/td&gt;&lt;td&gt;服务器未能理解请求。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;401 Unauthorized&lt;/td&gt;&lt;td&gt;被请求的页面需要用户名和密码。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;402 Payment Required&lt;/td&gt;&lt;td&gt;此代码尚无法使用。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;403 Forbidden&lt;/td&gt;&lt;td&gt;对被请求页面的访问被禁止。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;404 Not Found&lt;/td&gt;&lt;td&gt;服务器无法找到被请求的页面。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;405 Method Not Allowed&lt;/td&gt;&lt;td&gt;请求中指定的方法不被允许。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;406 Not Acceptable&lt;/td&gt;&lt;td&gt;服务器生成的响应无法被客户端所接受。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;407 Proxy Authentication Required&lt;/td&gt;&lt;td&gt;用户必须首先使用代理服务器进行验证，这样请求才会被处理。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;408 Request Timeout&lt;/td&gt;&lt;td&gt;请求超出了服务器的等待时间。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;409 Conflict&lt;/td&gt;&lt;td&gt;由于冲突，请求无法被完成。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;410 Gone&lt;/td&gt;&lt;td&gt;被请求的页面不可用。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;411 Length Required&lt;/td&gt;&lt;td&gt;"Content-Length"未被定义。如果无此内容，服务器不会接受请求。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;412 Precondition Failed&lt;/td&gt;&lt;td&gt;请求中的前提条件被服务器评估为失败。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;413 Request Entity Too Large&lt;/td&gt;&lt;td&gt;由于所请求的实体的太大，服务器不会接受请求。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;414 Request-url Too Long&lt;/td&gt;&lt;td&gt;由于url太长，服务器不会接受请求。当post请求被转换为带有很长的查询信息的get请求时，就会发生这种情况。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;415 Unsupported Media Type&lt;/td&gt;&lt;td&gt;由于媒介类型不被支持，服务器不会接受请求。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;416 &lt;/td&gt;&lt;td&gt;服务器不能满足客户在请求中指定的Range头。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;417 Expectation Failed&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;5xx: 服务器错误&lt;/span&gt;&lt;div&gt;&lt;table class="dataintable"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th style="width: 40%;"&gt;消息:&lt;/th&gt;&lt;th style="width: 60%;"&gt;描述:&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;500 Internal Server Error&lt;/td&gt;&lt;td&gt;请求未完成。服务器遇到不可预知的情况。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;501 Not Implemented&lt;/td&gt;&lt;td&gt;请求未完成。服务器不支持所请求的功能。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;502 Bad Gateway&lt;/td&gt;&lt;td&gt;请求未完成。服务器从上游服务器收到一个无效的响应。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;503 Service Unavailable&lt;/td&gt;&lt;td&gt;请求未完成。服务器临时过载或当机。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;504 Gateway Timeout&lt;/td&gt;&lt;td&gt;网关超时。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;505 HTTP Version Not Supported&lt;/td&gt;&lt;td&gt;服务器不支持请求中指明的HTTP协议版本。&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-2283355999262513944?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/2283355999262513944/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=2283355999262513944' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/2283355999262513944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/2283355999262513944'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/11/http.html' title='HTTP状态码参考'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-3273005483269442146</id><published>2008-11-03T09:27:00.003+08:00</published><updated>2008-11-21T19:20:10.421+08:00</updated><title type='text'>javascript类型陷阱</title><content type='html'>我们都知道，javascript是弱类型的。&lt;br /&gt;例如:&lt;br /&gt;声明一个int型变量 var num = 1;&lt;br /&gt;alert(1 == "1")  //显示true;&lt;br /&gt;&lt;br /&gt;但是在switch case 结构中，却不是这样。&lt;br /&gt;&lt;br /&gt;例如：&lt;br /&gt;var num=1;&lt;br /&gt;switch(num){&lt;br /&gt;   case '1':&lt;br /&gt;   alert("num 1"); //这里的alert将不会被执行。&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;可见，switch结构里并不是我们想像的那样弱类型的，如果类型不对这里会出问题。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-3273005483269442146?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/3273005483269442146/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=3273005483269442146' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/3273005483269442146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/3273005483269442146'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/11/javascript.html' title='javascript类型陷阱'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-4614122550902417549</id><published>2008-11-01T17:02:00.002+08:00</published><updated>2008-11-01T17:05:27.870+08:00</updated><title type='text'>东西哪里有啊？ 百度有啊有啊！！！</title><content type='html'>&lt;p&gt;有啊有！&lt;br /&gt;&lt;/p&gt;&lt;p&gt;A：东西不错嘛，哪里买的呀？&lt;/p&gt; &lt;p&gt;B：网上，有啊！&lt;/p&gt; &lt;p&gt;A：我知道网上有，具体是哪个网站？&lt;/p&gt; &lt;p&gt;B：有啊！&lt;/p&gt; &lt;p&gt;A：我知道有，可是到底是哪里啊？&lt;/p&gt; &lt;p&gt;B：百度有啊！&lt;/p&gt; &lt;p&gt;A：百度哪里有？&lt;/p&gt; &lt;p&gt;B：百度有啊有啊！&lt;/p&gt; &lt;p&gt;A：百度哪里有啊？&lt;/p&gt; &lt;p&gt;B：靠，百度的淘宝！&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-4614122550902417549?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/4614122550902417549/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=4614122550902417549' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/4614122550902417549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/4614122550902417549'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/11/blog-post.html' title='东西哪里有啊？ 百度有啊有啊！！！'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-2011476844719205481</id><published>2008-10-29T12:56:00.003+08:00</published><updated>2009-02-28T14:12:49.041+08:00</updated><title type='text'>语义化</title><content type='html'>在&lt;a href="http://www.aoao.org.cn/"&gt;&lt;span class="fn"&gt;嗷嗷&lt;/span&gt;&lt;/a&gt; &lt;span class="title"&gt;&lt;/span&gt;的个人小站上看到《Web设计》标准这本书的介绍，是他写的。下载了试读样章，着重看了&lt;span style="font-style: italic;"&gt;“第二章XHTML：浏览器上的新大陆”。&lt;/span&gt;内容极好，建议每个Web开发人员或Web前端设计人员都读读。读完后，相信你也会和我一样大彻大悟且恍然大悟。&lt;br /&gt;&lt;br /&gt;这么些年来，html，标签，属性是我们再熟悉不过的词了。但糊涂的是，我们只把它当作处浏览器可识别的标签，却从来没有想过他的语义。只知道h1-h6的是标题标签，p的段落标签。难道这不是一种罪过？ 我们应该彻底觉悟，否则我们将一直愚昧下去......&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Web标准带来的是什么？XHTML?&lt;br /&gt;其实XHTML并没有什么变化，带来的是思维的变化。&lt;/blockquote&gt;要想彻底地理解Web标准，那么一切从语义开始。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-2011476844719205481?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/2011476844719205481/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=2011476844719205481' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/2011476844719205481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/2011476844719205481'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/10/blog-post_29.html' title='语义化'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-5133594506369633644</id><published>2008-10-23T08:47:00.000+08:00</published><updated>2008-10-23T08:49:07.017+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UI/UE'/><title type='text'>Web开发设计的五大准则 - 译言翻译</title><content type='html'>&lt;a tabindex="-1" class="wi" id="gn22_4" title="通过拖动可移动该笔记"&gt;&lt;span class="ri"&gt;&lt;/span&gt;&lt;/a&gt;&lt;div class="ui"&gt;&lt;span class="si"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="sh"&gt;&lt;div style="clear: left;"&gt;&lt;a id="gn22_7" class="uh" href="http://www.yeeyan.com/articles/view/6559/3448"&gt;www.yeeyan.com/articles/view/6559/3448&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt; &lt;p&gt;如果仓促而为，设计一个专题或者网站一定会成为恶梦。Web设计需要遵循一些准则并有计划地去做。&lt;/p&gt; &lt;p&gt;       Rule #1 : 先出设计图&lt;/p&gt; &lt;p&gt;这是必须的。不要假设设计图在你的头脑中就开始设计web，必须要放到纸上。可以这样做：&lt;/p&gt; &lt;p&gt;1，  拿尺子、笔和纸，按照具体的尺寸一行一行地画下来；&lt;/p&gt; &lt;p&gt;2，  记得考虑分界线的长度等，这样才能符合CSS的像素；&lt;/p&gt; &lt;p&gt;3，  记下设计的每一个细节免得忘记，如果把所有细节都累积到最后将是巨大的麻烦。&lt;/p&gt; &lt;p&gt;Rule #2 :配色&lt;/p&gt; &lt;p&gt;这是设计的核心部分，只有颜色搭配合适才能使你的网页看起来不错。首先要决定的是主色，也即你在网页中多数使用的颜色；然后选择跟主色调搭配的第二颜色；不要选择超过三种颜色不然你的设计看起来会很乱。如果你想要更多的颜色，可以使用浅色或者深色的阴影来搭配主色调。&lt;/p&gt; &lt;p&gt;1，  浏览十个跟你网页有同样主色调的网页；&lt;/p&gt; &lt;p&gt;2，  给几个人看你的配色方案并取得反馈；&lt;/p&gt; &lt;p&gt;3，  从浏览的网页和反馈你将更好地完善你的颜色搭配。&lt;/p&gt; &lt;p&gt;Rule #3 : 从基本的版块开始构建&lt;/p&gt; &lt;p&gt;定下配色和设计图之后，从最基本的框架开始构建——我的意思是说不添加任何文本。因为在版面中加入文本会使得架构混乱。方法如下：&lt;/p&gt; &lt;p&gt;1，  每一个版块设定边界线，这样能够看到具体的尺寸和位置；&lt;/p&gt; &lt;p&gt;2，  对不同的版块使用不同的颜色，在完成版块后再改成你想要的颜色。&lt;/p&gt; &lt;p&gt;Rule #4 : 理清CSS&lt;/p&gt; &lt;p&gt;不要在你的HTML文件中将styling元素搞得太复杂，不然等到你修改的时候你就不得不到处搜索。所以将所有styling元素归置在一个单独的CSS文档中。&lt;/p&gt; &lt;p&gt;在styling之前理清你的CSS免得太过杂乱导致你多次重复同一件事。CSS支持继承，也即parent block的style可以用于child block.，充分利用这条特性。命名CSS分类名也要易懂易记。比如使用“main_content”而不是“div_1”。&lt;/p&gt; &lt;p&gt;Rule #5 : 制订多重 CSS 文档&lt;/p&gt; &lt;p&gt;我们都知道，使用浏览器可以轻易地看到网页的输出，但使用另一浏览器的时候则可能发现输出不正常。这不是什么稀奇事儿，因为每个浏览器对HTML和CSS的处理方式都不一样。&lt;/p&gt; &lt;p&gt;为避免这种情况，每个浏览器准备一个CSS文档，这样所有浏览器都可以正常浏览。虽然这有一定的难度，但是记着指望一个CSS文档来满足所有浏览器是不可能的。&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-5133594506369633644?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/5133594506369633644/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=5133594506369633644' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/5133594506369633644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/5133594506369633644'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/10/web.html' title='Web开发设计的五大准则 - 译言翻译'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-5429564023124135334</id><published>2008-10-21T19:31:00.002+08:00</published><updated>2008-10-21T19:45:56.332+08:00</updated><title type='text'>编码规范简单记法</title><content type='html'>编码规范简单记法：&lt;br /&gt;&lt;br /&gt;每行不超过80个字符&lt;br /&gt;&lt;br /&gt;建议是用tab缩减，一般都是4格缩进。&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;（有的人可能说不用tab，如果你不怕每次的缩进都敲4次，那你就用空格，用空格的好处就是在任何地方代码看起来都一样，谨此而已。现在基本上都是ide）&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;不要空格的位置有：&lt;br /&gt;　　1）函数名与之后的左括号(，包括带参数的宏与之后的左括号(，例如max(a, b)。&lt;br /&gt;　　2）分号;与冒号:之前。&lt;br /&gt;　　3）左括号(右边，右括号)左边，例如if (p == NULL)。&lt;br /&gt;&lt;br /&gt;需要空行的位置有：&lt;br /&gt;　　1）函数的定义之前、函数的定义之后&lt;br /&gt;　　2）一组联系紧密的代码段之前和之后&lt;br /&gt;　　&lt;br /&gt;需要空格的位置有：&lt;br /&gt;　　1）if、while、switch等关键字与之后的左括号(之间。&lt;br /&gt;　　2）左花括号{之前。&lt;br /&gt;　　3）双目运算符两侧，例如p == NULL。&lt;br /&gt;　　4）逗号,与分号;之后，例如for (i = 0; i&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-5429564023124135334?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/5429564023124135334/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=5429564023124135334' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/5429564023124135334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/5429564023124135334'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/10/blog-post_21.html' title='编码规范简单记法'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-3101430774229421680</id><published>2008-10-18T20:52:00.001+08:00</published><updated>2008-10-18T20:56:34.282+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='经济'/><title type='text'>经济学原理文章（炒股，炒房必看）</title><content type='html'>&lt;span style="font-size:180%;"&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;转自：http://www.langxianping.com.cn/bbs/ShowPost.asp?ThreadID=2148&lt;/span&gt;&lt;b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;blockquote style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:180%;"&gt;&lt;b&gt;经济学原理文章（炒股，炒房必看）&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;             ------------------------------------------------------------------------------------------------------------------&lt;br /&gt;             &lt;span style="color: rgb(255, 255, 255);"&gt;文章来源：[郎咸平中文网论坛] http://www.langxianping.com.cn/bbs&lt;/span&gt;         &lt;br /&gt;&lt;span id="tpid2129943" _extended="true"&gt;&lt;span id="spid2129943" _extended="true"&gt;&lt;strong&gt;1、什么是经济发展？&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;简单的讲经济发展就是有钱，但钱从何来？钱只能印出来。那么到底是什么使印钞机不停的运转？&lt;br /&gt;&lt;br /&gt;假 设一个岛上有1000口人，与世隔绝，人与人之间交换物品过活，但有时候你手里用来交换的东西不一定就是对方想要的，怎么办？于是人们就用都喜欢的金银作 为交换的东西，于是交换方便了。但金银要磨损，携带也不方便，当交换活动频繁时，发现这个东西太繁琐，限制了交换活动，于是为了解决这个问题，想了一个办 法，就是由岛上的管理者发行一种符号，用它来代替金银，于是钞票出现了。&lt;br /&gt;&lt;br /&gt;刚开始这种钞票可以随时得兑换金银。大家都很放心，因为钞票就是金银。可是岛上金银的产量太小，当人们的交换活动更加频繁时，钞票不够用了，只能暂停交换。暂停交换的后果就是大家不生产别人想要的东西了，因为虽然别人用，但交换不出去，套用现在的话说就是经济发展减速了。&lt;br /&gt;&lt;br /&gt;于是大家想了一个办法，成立一家钱庄，这个钱庄是大家的，由钱庄来发行钞票，印出的钞票借给想用钱的人，然后这个人有钱了再还给钱庄。于是银行就出现了。&lt;br /&gt;&lt;br /&gt;银行的出现，能保证交换活动更持续的进行，大家都拼命的生产，岛上的东西越来越多，银行根据产品的生产数量，不停的印制钞票，以保证交换能更深入的进行。&lt;br /&gt;&lt;br /&gt;后来人们的交换活动更频繁了，一家钱庄太少了，于是出现了很多钱庄，总要有个管钱庄的吧，于是指定一家钱庄管理其他钱庄，并且钞票只能由这家钱庄印刷，然后通过其他钱庄借给用钱的人，中央银行就这么也出现了。        &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2、什么是对外贸易？&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;有 一天岛上的人发明了船，于是就到处划船跑，发现了另一个岛屿，那上面也有人，也有钞票，也像自己岛上这么活动。但自己岛上生产的东西多，那个岛上生产的东 西少，1元钱在自己的岛上能买1斤大米，那个岛上的一元钱只能买半斤大米，于是另外岛上的钱来这个岛上买东西时只能2元换1元才行。于是汇率出现了。算好 汇率后，他们开始互相买卖东西到对方岛上，这就是对外贸易。对外贸易丰富了人们的生活生产需要，使交换活动到了一个空前的高潮。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3、什么是通货膨胀？&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;由 于岛上生产的产品太多了，以至于没法准确估计到底该发行多少钞票，发行多了的时候，因为没有那么多产品可买，产品就开始涨价，发行少了呢就开始降价，为了 保证价格稳定，央行要求各钱庄要把一部分钱放在央行里面用来调节产品的价格，根据价格情况多放和少放。这就是存款准备金率。&lt;br /&gt;&lt;br /&gt;可 是有一部分聪明人开始怎么才能把钱弄到自己手上，他在海边捡了一颗石子，说这个石子值100万快钱，把它卖给了一个人，这个人觉得整个岛上的钱加一起也没 有100万啊，怎么办，于是向钱庄借，钱庄也没有这么多钱，于是把印钞机打开，印了这100万，借给了他买了这个石子。&lt;br /&gt;&lt;br /&gt;然 后这个人开始卖这个石子，100万卖给了第二个人，由于第一个卖石子的人把钱花了，所以岛上的钱多了，所以这一百万可以筹集到，多买些产品就有了。但当把 这个石子以200万转让的时候，钱庄只能又印了100万钞票，就这样钞票越印越多，可是当这个石子不停的流动转让时，大家并不觉得岛上的钱多，产品价格还 是原来的那样。可是当这个石子不流通或流通的慢时，大家觉得钱多了，可是如果当持有石子的人把它扔到大海里，那就等于岛上凭空多出N多个100 万来，怎么办，央行最害怕的就是这颗石子没了。它没了岛上产品的价格就会飞涨，就会通货膨胀。那么持有石子的人就绑架了岛上的经济。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4、房价能绑架中国经济吗？&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;中国的房地产已经使中国央行发行了太多的人民币，如果房价下降，等于把那颗石子投进了海里，那么多印出来的钱会使中国产品价格飞涨，会发生严重的通货膨胀。&lt;br /&gt;&lt;br /&gt;看 似房价与石子毫无相干，可是他们的属性是一样的，就是价格和价值严重的背离。实际上房地产的崩盘受害最大的并不是中国的商业银行，而是整个中国经济体系。 为什么政府迟迟没有把房价降下来，不是降不下来，如果真想降房价，只需要一道政令，房地产价格会在一夜之间土崩瓦解。可是后果谁能承担，严重通货膨胀谁来 负责？&lt;br /&gt;&lt;br /&gt;房地产业已经绑架了中国的经济，是无可置疑的，是客观实在的，没有人能改变。&lt;br /&gt;&lt;br /&gt;不管谁是***，廉洁也好，贪污也好，都希望社会和谐，可这是一个棘手的问题。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;5、房价和通货膨胀有关系吗？&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;可更棘手的问题还不仅仅在这里。如果降房价，面对的是马上的通货膨胀，可不降房价，那么面对的就是更严重的通货膨胀，何去何从？&lt;br /&gt;&lt;br /&gt;所 以最可靠的办法就是稳定房价，然后在社会产品增加时，减少货币的投放量，加上其他政策如加息、增加商业银行准备金率、缩小信贷规模等辅助手段，来使中国经 济软着陆，这是最好的办法，我们看到的一切政令也是这个逻辑。不信的话，可以查阅一下近年来政府发布的一系列调控房地产业的措施。&lt;br /&gt;&lt;br /&gt;可是为什么房价不稳定而且更加的疯长呢？难道是开发商与政府在博弈吗？告诉你在中国没有人能和党叫板，几个肚子大点的开发商是没有这个实力的。实际上是幕后的另一只黑手在和中国政府博弈，这支黑手就是外资，以美国为代表的帝国主义攫取中国人民血汗的黑手。 &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;6、房价高涨的原动力是什么？&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;使房价上涨的动力很多，房价上涨对其有利的人就是动力之一，比如：为了GDP和个人利益的地方政府、为了赚钱的开发商、炒房族、以至于买了房的所谓“房奴”都是是房价上涨的动力，可是最大的原动力不是这些，是外资，是美国的以攫取超额利润的各大财团。&lt;br /&gt;&lt;br /&gt;开 发商作为商人，为了赚取高额利润不是什么伤天害理的事情，可是各行各业都有商人，难道想赚就有吗？那除非是神话。房地产业的开发商也一样，不是他们想赚多 少就有多少的。根据价值规律，当商品的价格和价值严重背离时，会有一种趋向正常价格回归的力量钳制价格的上涨，可是在中国的房地产业，这种规律似乎不起作 用，一个重要的原因是忽视了一个参考范围的原因，如果以中国经济本身而言确实打破了这个规律，可是目前的情况是有一股力量在维持着房地产业的价格，即托 市，那么谁在托市呢？&lt;br /&gt;&lt;br /&gt;谁能在房地产业失控能得到巨额利润的人就是托市的人。&lt;br /&gt;&lt;br /&gt;讨 论这个问题前，现看一下中国的外汇储备情况。中国的外汇储备在近几年迅速由1、2千亿突破万亿，并且还在迅速的增长，难道是中国人民奋发图强，挣来的吗？ 这个不需要证明，看中国的GDP增幅就知道，外汇储备的增长速度明显大于GDP的增幅。显然不是挣来的，那么除了挣来的一部分，那么就是所谓的“国际热钱 ”的涌入，而国际热钱的涌入的目的只有一个，就是要取得高额的回报。&lt;br /&gt;&lt;br /&gt;国 际热钱进入中国市场后，首先要兑换成人民币，那么一下子哪有这么多人民币呢？只有一个办法就是让印钞机没日没夜的工作，然后这笔钱用来托住已是烫手山芋的 房地产市场，就是拼命的投资房地产业，当房地产价格因背离价值而向下波动时，通过托市再把它抬高，反复如此，给人的表象就是房产价格决没有偏离价值。导致 房价越涨越高。&lt;br /&gt;&lt;br /&gt;而开发商呢，他们一到房子将要卖不出去的时候，就有人出高价买下来，他们怎么会降价，如果没有这部分资金在运作，别说是开发商联盟，就是全国只有一个开发商，价格也会降下来，没有人买了，难道等房子发霉吗？&lt;br /&gt;&lt;br /&gt;那么外资持有这么多高价房产做什么？不怕砸到手里吗？&lt;br /&gt;&lt;br /&gt;不怕！为什么呢？在这个资本运作的过程中，有一个冤大头在最底下接着呢，是谁呢？就是中国的商业银行，由于火爆的房地产市场，一流的流通性，近年来没有看到任何萎缩的迹象，放了贷款就盈利，为什么不贷款呢？没有理由不放贷款。&lt;br /&gt;&lt;br /&gt;加之中国老百姓买房的心情，外资可以轻易的把高价房转嫁到中国的银行和消费者身上，连炒房的农民都能赚到一杯羹，职业的外资会赔钱吗？&lt;br /&gt;&lt;br /&gt;那么房价一直涨下去，会怎样呢？请看下一节：“7、房价一直涨下去，开发商会笑还是会哭？什么情况下会笑？什么情况下会哭？” *&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;7、房价一直涨下去，开发商会笑还是会哭？什么情况下会笑？什么情况下会哭？&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;在中国政府近几年来密集的几十道金牌的调控下，房价还是如脱了缰的野马一样狂奔不止。暂且不论何时能停止上涨的势头，毕竟房价在目前还是上涨的，所以我们就看看房价上涨不止会带来什么。&lt;br /&gt;&lt;br /&gt;首先：由于GDP上涨，中国政府为了维持上文说的“保持产品交换的继续”要不断地投放人民币，即开动印钞机。只要房地产这个石子还没有投入到大海里去，还有一定的流通性，那么就不会有通货膨胀的发生。&lt;br /&gt;&lt;br /&gt;其次：开发商会在这个过程中也赚取巨大的利润。&lt;br /&gt;&lt;br /&gt;再次：能看到的是，炒房族会赚钱、所谓的买房的“房奴”会增值。&lt;br /&gt;&lt;br /&gt;都 赚钱！可是在这个过程中到底谁亏了呢？钱从哪里来呢？如果你是有炒股的经验就会知道，如果投资价格和价值背离的商品，你赚的钱就是别人赔的钱，那么套用到 房地产上，就是买房自住的人，现在看似增值，那是镜中月、水中花，你不变现就不是你的。再有就是当价格完全回归真实价值的时候，有时甚至会到真实价值一 下，被高价房套住的投资者。还有一个就是开发商！&lt;br /&gt;&lt;br /&gt;为什么说开发商 也有赔钱呢？大家知道商人的本性是赚钱，赚取利润。如果一个商人投机一次就永远都不做这个生意了，他是赚钱了，可他不是商人，这种商业行为没有意义。由于 商人的本性，所以赚来的钱会继续扩大再生产，在能赚钱的领域不断的加大投资。这个道理从生活中就可看出来，越是做大生意的人总喊没钱，因为要更大的流动资 金来维持其扩大再生产的需要。&lt;br /&gt;&lt;br /&gt;所以一旦房价回归真实的价值之时， 就是有一大批开发商崩溃之日。这个是不以任何人的意志和任何行为为转移的。如果现在有开发商逃离房地产业的角斗场，那么跑得慢的就是最后的输家。如果都不 跑，就像击鼓传花一样，最后拿到接力棒的就是接盘者。有句话叫：“出来混迟早是要还的”。也许只不过是方式不一样，看谁的运气好而已。&lt;br /&gt;&lt;br /&gt;可是现在却没有任何的开发商赔钱的迹象，有的是开发商不断的赚钱，老百姓送钱都来不及。只是因为目前房价还在上涨，房产还在不断的流动。&lt;br /&gt;&lt;br /&gt;一个巨大的问题来了，这样不断上涨的房价何时是个头啊，请看下一节：“8、坐在华尔街办公室的财团们是如何吸干中国山区一个农民的血汗的”&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;8、坐在华尔街办公室的财团们是如何吸干中国山区一个农民的血汗的&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;毛 主席说过：“帝国主义没有睡大觉,而是天天在蠢蠢欲动,在图谋不轨,想达到他们的罪恶目的。诚然他们的气焰的确没有以前那么嚣张,但他们确实在活动着。” 是不是冷战结束就代表着人类的和平得以实现呢？“一句上帝面前人人平等”就能掩盖帝国主义噬血的本质吗？人人平等的理念是对的，但它只不过是帝国主义用来 欺骗人们的伎俩罢了，说到和做到永远是两码事。&lt;br /&gt;&lt;br /&gt;国际财团通过国际热钱涌入中国，使人民币加大发行量，然后通过房地产炒作，把中国的国内价格水平无限制的提高，GDP的增长又一次使人民币的发行量被迫提高。国际财团心黑手狠，双管齐下，目的就是使中国经济热到烫手，热到让每个中国人为之疯狂。&lt;br /&gt;&lt;br /&gt;我们暂不去关心这个过程，我们放眼未来，看看这一过程的结果是什么样呢？换句话说财团的目的是什么呢？&lt;br /&gt;&lt;br /&gt;很 明显，中国人最不愿意看到的事情，就是财团们最乐见的结果。先做个假设，比如国际热钱在投资的中国房地产领域里上演最后的疯狂后，然后把房产成功解套全部 变现，如果此时人民币兑美元的汇率达到美国预期最高时，汇率是热钱逃离时需要相乘的那个倍数，会发生什么谁都能想到，所有热钱会一夜之间全部兑换美元逃 离。财团们会赚得沟满壕平，中国市场上除了钱就是钱，能遮住天的大把人民币将成为中国人民的噩梦。&lt;br /&gt;&lt;br /&gt;这是中国人最不愿意看到的事情，也是财团最乐见的结果。近期美国不断的通过政治、贸易等手段逼迫人民币升值，而中国政府迟迟不升值或小范围的升值，远远没有达到美国政府的预期，这是在出口处的中美之间的博弈。美国逼迫人民币升值的狼子野心昭然若揭！&lt;br /&gt;&lt;br /&gt;顺便提一句，如果真的这个升值预期达到了，中国楼市将重演日本上世纪90年代崩盘的历史。只是那时中国经济也会像日本一样进入一个连续低迷不振的不归路。&lt;br /&gt;&lt;br /&gt;在这种攸关民族生存的问题上，政府会坐视不管吗？就算是退一步来讲，一个完全不负责任的政府遇到这种情况，因为这个资本运作同时也极大侵犯了政府的利益，也会拼命反搏的。&lt;br /&gt;&lt;br /&gt;那么中国政府会以什么样的方式来化解这一“经济危机”呢？请看下一节：“在有关这场围绕房价和通货膨胀之间的各方博弈中可能选择的中庸路线”。     &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;9、在有关这场围绕房价和通货膨胀之间的各方博弈中可能选择的中庸路线&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;我一直相信：物极必反，中庸，是老祖宗留给后人解决棘手问题的杀手锏！&lt;br /&gt;&lt;br /&gt;既然是中国房地产“绑架”了中国的经济，那么我们就从“绑架”说起。何为“绑架”，应该是相对弱的一方，拿着相对强的一方的“要害”，使相对强的一方即便有能力对付弱的一方，但碍于投鼠忌器，无力可施。&lt;br /&gt;&lt;br /&gt;我 们先来看看绑架双方的阵容和各自手上的筹码。房地产业的主体是开发商，所以开发商算一方，它绑架的要害是中国经济，那中国经济是谁的要害呢？是中国人民的 要害，代表中国人民的，目前只能是中国政府。中国政府算一方。外资呢？它是煽风点火者，划到开发商一方。中国政府一方有公权力，可以通过税收、财政、经济 政策、行政手段对开发商阵营施力，开发商阵营通过源源不断的后备资金来绑架中国经济，且不断的提高赎金。&lt;br /&gt;&lt;br /&gt;问 题已经摆在这里，怎么办呢？冲上去一枪击毙，那歹徒非撕票不可，太极端不可行。所以有为政府开出药方，只要实现了某某一条既可降低房价的主意，就犹如这一 枪击毙一样是不可行的。我们想象如何解救绑架事件的，首先要稳定住对方的情绪，再一步步地靠近，但这种靠近虽会引起歹徒的敌意，但不会导致他撕票，然后再 进一步稳定情绪，再靠近，然后条件成熟时，再稳准狠，即保证人质的安全，又要保证歹徒一举拿下。这才是真正的营救。&lt;br /&gt;&lt;br /&gt;所以中庸才是解决棘手问题的杀手锏。极端、盲目、冒进是要不得的。&lt;br /&gt;&lt;br /&gt;针对如何解决中国房地产市场的绑架问题，就要围绕问题的关键部分一步步地施加反作用力，然后一举成功，才是正道。&lt;br /&gt;&lt;br /&gt;第 一个关键的部分就是汇率，中国政府会严把汇率关，我们可以预期的是，人民币兑美元的汇率决不会过快升值，但会小幅升值，就是要稳定对方的情绪，如果一点不 升，对方会狗急跳墙，如果升的过快，是给自己掘墓，所以为什么中国汇率升幅总是犹抱琵琶半遮面，看看美国政府的态度跟一个绑匪是多么的贴切，我要一瓶果 汁，为什么拿来半瓶水。可又说不出什么来，毕竟还能暂时解渴。&lt;br /&gt;&lt;br /&gt;第 二个关键是限制资产流动性，既然房地产能绑架中国经济，说明它举足轻重，限制房产的流通性，就可以限制资产的流动性，注意这里是两个概念，“资产流动性” 和“房产流通性”。两者完全不同，但又息息相关。房产流通性减弱，资产流动性减弱，那么需要印刷的人民币就减少。就像那个石子，不流通马上通胀，不涨价流 通没问题，可是行不通，外资也不同意。既然是不断的上涨价格，只能一步步地限制房产流通，只要房产流通性少一点，通胀就会显现一点，然后再通过上调准备金 率和加息等柔性政策来调整一点，用柳叶棉丝掌来化解泰森的一记重拳，以绵柔克强刚、化千钧于无形，这就是中国政府的策略（这好像是中国人最擅长的事情）。 我们从官方媒体就能看到相关的消息，楼市签约率在下降，即流通性在下降，然后物价开始有所涨幅，如猪肉等副食产品，但央行马上上调准备金率和加息，来稳定 物价。不知各位看官是否也看出些端倪。可预期的是，到完全化解危机之前，会不断地加息和调高准备金率，同时房产流通性会越来越弱，这个预言是否准确可在以 后的央行政策上验证。等完全消除了由于经济过热导致的通货膨胀预期，那么就是房地产价格回归真实价值之时。&lt;br /&gt;&lt;br /&gt;不管你看到没看到，这已是最后的疯狂，我们从两方面来分析：&lt;br /&gt;&lt;br /&gt;第 一，如果这场博弈以外资胜利而告终，那么中国经济将步日本90年代持续下滑的深渊，由于外资撤走，房市赖以生存的支柱坍塌，房价会一落千丈，可到时候不管 是开发商还是老百姓都将承受经济下滑之苦，持有的货币迅速贬值，即便房价落下，也不一定买的起。这是中国政府和中国人民不可接受的，也是无法接受的。&lt;br /&gt;&lt;br /&gt;第 二，如果外资以失败而告终，即在汇率上把住出口，让房价回归真实价值，把外资同样套在中国，这才是胜利的前提。那么以美国财团为首的帝国主义噬血者必将疯 狂报复，会在投资、出口等各方面对中国施加压力。我们今天人民币升值没有达到美国预期，已经导致中国出口到美国的产品受打压，进而引起了众多的贸易摩擦， 由此可见一斑。我们知道，经济发展的三套马车是，投资、出口和消费，在投资、出口领域遭到报复会影响中国经济的发展，但我相信不会影响我们的发展速度，别 忘了还有一套马车是“消费”，房价下降后，如果你是爱国者，请现在保护好你的钱包，到时千万别羞羞答答，要果断地出手买房，中国经济会在消费领域异军突 起，继续独占世界经济引擎的鳌头。&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span id="tpid2129943" _extended="true"&gt;&lt;span id="spid2129943" _extended="true"&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-3101430774229421680?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/3101430774229421680/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=3101430774229421680' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/3101430774229421680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/3101430774229421680'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/10/blog-post_8493.html' title='经济学原理文章（炒股，炒房必看）'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-3290439225195651884</id><published>2008-10-18T15:45:00.005+08:00</published><updated>2008-10-18T15:57:52.952+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='经济'/><title type='text'>郎咸平在烟台的演讲</title><content type='html'>&lt;p&gt;       &lt;span style="font-size:100%;"&gt;看了郎咸平教授的演讲记录，很精彩！很多网友评价说是“学术良知”，我也这么认为。甚至想，&lt;/span&gt;&lt;span style="font-size:100%;"&gt;去搞学术研究，&lt;/span&gt;&lt;span style="font-size:100%;"&gt;以这样的方式来爱国。还写什么程序啊.... 可能要等我老了吧...&lt;/span&gt;&lt;span style="font-size:100%;"&gt; :-)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote style="color: rgb(0, 0, 0);"&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;财富论坛&lt;br /&gt;&lt;br /&gt;   主持人：尊敬的各位领导、各位来宾，欢迎大家来到阳光100财富&lt;span&gt;中国&lt;/span&gt;系列活动 财富论坛烟台站的活动现场，非常容幸今天能够和大家一起在这样一个暖暖的午后一起聆听世界顶级的经济学家给我们带来的全新思维盛宴。。。。。。&lt;br /&gt;&lt;br /&gt;朗教授：今天很高兴，能够来到烟台谈谈让人沮丧的题目，当前经济热点透视，你只要谈到当前经济热点，都是坏消息。那么，请各位来宾想想，你面临的最大的危 机是什么？我可以这样告诉你，我们中国改革开放30年，基本是成功，尤其是10余年来，我们经济高度发展的结果孕育出了在座各位一大批企业家。可是你知道 吗？由于你所处的环境太顺了，我国经济增长太成功，因此你们这批企业家，只有个人的艰辛的奋斗历程，全中国的政府&lt;span&gt;官员&lt;/span&gt;， 全体企业家没有一个人经历过马上要发生的经济危机。昨天晚上到现在，竟然有几个企业家问我一句话，朗教授你看看现在还有什么有潜力的行业我想投资的，我只 想三个字我说你疯了，你什么也不懂。你把人生看得太简单，你过去怎么成功的？你过去是顺着改革的潮流成功的，我告诉你在今天这刻是每位在座的企业家反思的 事。我们的未来是什么？请各位来宾看看今天提供的数据，&lt;span&gt;美国&lt;/span&gt;&lt;span&gt;股市&lt;/span&gt;从年初到现在，跌了？蒸发了多少亿资金？8.5万亿美元是什么概念？这就是我们中国05、06、07三年GDP的总和全部白干了，一个国家的股市跌了这么多，它所象征的后续是极其可怕的，那就是一个持续的大萧条即将来临。&lt;br /&gt;&lt;br /&gt;而中国的股市，虽然过去有所谓的泡沫现象，但是在这里我得很遗憾地告诉各位中国股市已经跌了超过70%，这和美国1929年股市崩盘差不多，这种股市大跌 是什么意义？为什么我在去年年底的时候，我敢预言中国股市大跌，就在今年五月份我在凤凰卫视《铿锵三人行》我呼吁全国股民不要对奥运有幻想，股价一定会持 续下跌，讲这句话不是一个简单的我有没有胆识、敢不敢讲的问题，我为什么这样讲，当然你们知道我这样讲是对的，中国股价一反世界潮流，什么叫做世界潮流 呢？那就是任何奥运主办国的国家都在奥运前大幅攀升，奥运后大幅下跌，我为了讲中国股价会下跌呢，因为我已经看到了经济危机，很多人说朗教授你的争议性比 较大，我说你们是错的，我从来没有，因为我讲的到最后都会实现的。&lt;br /&gt;&lt;br /&gt;请各位想想，世界经济的次贷危机会对你造成什么冲击？在这刻我姑且把这个话题束之高阁，我先不告诉你，我可以告诉你更可怕的是危机没有来之前，我国已经产 生了危机，那就是从前年到去年的股市泡沫和楼市泡沫现象，这种泡沫现象，各位来宾你们以为是我们中国经济发展更成功了吗？你认为是我们中国老百姓更富裕了 吗？因此有更多的闲钱炒股吗？不是吧？我在去年年初又讲了一句话争议性的话，很多学者不高兴，我说股市泡沫跟楼市泡沫的本质不是经济更好了，不是我们更富 裕了，而是制造业的回光返照，这是什么意思？我国制造业企业家所面临的投资环境已经开始急速恶化，因此，很多企业家把应该投资在制造业的钱不投资的，拿出 来去干吗呢？炒楼炒股了因此大量的企业资金进入股市、楼市才是楼市泡沫和股市泡沫的真正原因。&lt;br /&gt;&lt;br /&gt;按照我的说法，下一步应该是制造业的大量倒闭，为了把我当时的观点记录在案，我绝对不放马后炮，我写了一篇文章叫做《八大危机》，出来以后，点击率超过一 个亿，虽然很轰动，但是像我的人生一样从来不得到重视，因为大家都喜欢专家、学者谈一万点、八千点，不喜欢听我讲实话，不幸的是今年的经济按照我去年所说 的八大危机一步一步发生。&lt;br /&gt;&lt;br /&gt;就在这个时刻，广东的媒体叫《南方人物周刊》对我做了一个专访，尤其是我写了八大危机之后，他们觉得不可思议，到现在我也记得，他说当全中国专家学者说股 市泡沫、楼市泡沫、多膨胀是由于流动性过剩的时候，郎咸平不同意，郎咸平说应该是制造业的回光返照，如果郎咸平是对的，那么全国的专家、学者都是错的。因 此，政府推行的宏观调控，不但不能解决问题，反而是一个落井下石的毒药，那是10年之前。我今天我有点羞答答，不好意思告诉你们，最后&lt;span&gt;证明&lt;/span&gt;我是全国唯一对的学者，其他的都错了。（掌声）&lt;/span&gt;     &lt;/p&gt;     &lt;p&gt;       &lt;span style="font-size:100%;"&gt;否 则你们这么忙，干吗听我在这里演讲呢？那么各位想想，什么叫做流动性过剩？我们的学者竟然认为，楼市泡沫、股市泡沫，还有通货膨胀，就是简单的流动性过 剩，什么是流动性过剩？那就是我们手上的钱太多，买股票，股市泡沫；买楼房，楼市泡沫；买产品，通货膨胀，因此用一个所谓的流动性过剩的学术名词都可以简 单解释07年发生的一切现象。那么，我们政府所推行的宏观调控政策，竟然是以收回流动性为目的。其方法是提高利率跟提高银行利率和存款准备金率，到了年底 经济工作会议更进一步加大力度，实行宏观调控。那么我请各位来宾想一想，有没有可能全中国的学者都是错的？有没有可能流动性过剩就是错的？有没有可能因为 流动性过剩所推行的宏观调控也是错的？在这里，很不幸的告诉各位，这都是错的。因此，我们的制造业才如此的被动。中国经济根本就不是流动性过剩，胡说八 道。由此产生的政策误导让我们的政府、让我们的企业付出了沉重的代价。而且我们的学者特别喜欢粉饰太平、取悦领导，这种方法更是让我们的经济雪上加霜。&lt;br /&gt;&lt;br /&gt;今天我针对这一切的前提，跟各位从国内一直谈到国外，让各位清清楚楚知道我国经济出了什么问题，为什么会产生泡沫现象，其实泡沫现象只是一个表面现象，真 正的原因是我们整个经济发展出现了重大危机。请各位想想，我们每年10%的经济增长是怎么来的？很多股民这么问我，朗教授你看我们经济增长这么成功，每年 10%，我们的股票&lt;span&gt;市场&lt;/span&gt;没 有反映我们的经济增长的乐观现象嘛，我说你是错的，中国的股票市场是真真实实反映着我国经济的本质问题，你每年看到的10%的经济增长本身都是有问题的。 什么问题呢？那就是我们整个经济增长的模式是错的。我们是以什么方式拉动经济增长啊？我们是钢筋、水泥所拉动的，也就是说你们到各地区看，各地政府搞的绿 化也好，桥梁也好，这些东西拉动了中国的经济增长。那么这些部分是多少？这些部门占了经济总量的30%左右，也就是说和地方政府推动GDP工程有关的部门 拉动了经济增长。那么这些部门是中国经济真正过热的部门。&lt;br /&gt;&lt;br /&gt;那么其他的民营制造业呢？基本上过冷。这些部门只占了30%左右的部门是哪些部门呢？以去年为例，包括地产、政绩工程、形象工程、大型国企，其他的融资银 行和证券公司等等，这些部门你知道去年的增长率是多少呢？就以去年为例，超过30%。30%的总量，它的成本率超过百分之三十几。一平摊下来，中国全国的 经济增长应该是10%左右，理解了吗？我们的民营经济对国家的贡献是非常小的。&lt;br /&gt;&lt;br /&gt;因为我们这么多年把大量的资源投入在基础建设，基础建设也就是GDP工程建设推动了10几年来的经济发展。那么这个推动表面上看起来我国取得了光荣的 GDP，实际上我们为此付出了沉重的代价。我给你举个例子，什么叫做代价，这种发展模式使得我国GDP的组成非常的畸形、非常扭曲。我们拿我们的GDP和 欧美、日本等国比较，那些国家，他们是以消费需求为主要拉动的，也就是说当我想喝矿泉水的时候你生产矿泉水，当我想弹钢琴的时候你生产钢琴，我想打手机的 时候，你生产手机，很正常。因此他们的70%都是消费。我们刚好相反，我们的消费只有35%，只有别人的一半，我们的GDP是什么东西呢？都是你们在外面 看到的钢筋水泥，占到50%以上，欧美各国20%不到。&lt;/span&gt;     &lt;/p&gt;     &lt;p&gt;       &lt;span style="font-size:100%;"&gt;各 位了不了解这种经济会造成什么样的可怕的结果？那就是，由于我们国内的消费太少，因此，造成了大量的产能过剩，我们制造太多的消费不了，而且我们产能过剩 是怎么造成的呢？我们牺牲了我们的环境，破坏了我们资源，剥削了我们的劳工，因此，产能大幅扩张，而且产能大幅扩张到什么地步？到了我们老百姓消费不了的 地步，大量产品制造出来，我们只有30%的消费，因此能是出口创汇，把过剩产能生产出来的产品卖给外国，美其名曰是出口创汇，其实是埋下了定时炸弹，就在 08年爆炸了，是什么因的炸弹呢？你想想，我们只消费的30%，而我们这么多的产能，这么多产品不得不出口给别的国家消费，不但破坏了环境剥削了劳工，同 时我们赚了大把的美元外汇，06年破的1万亿，07年破的1.5万亿，08年破了1.8万亿，现在正在破1.9万亿，讲问以后就是1.9万亿了。外汇大量 积累的结果使得我们这种被动以出口创汇为主导的畸形经济付上的沉重的代价，人民币不断升值，不断升值的结果，回过头来打击到这些以出口为主导的民营经济。&lt;br /&gt;&lt;br /&gt;所以，二元经济成型了，什么是二元经济，那就是真正拉动经济增长的与政府推动GDP工程有关的部门过热，而其他的民营制造业开始受到的严重的打击。汇率上 升首先敲响了70%的民营制造业的警钟，面临的投资环境开始紧缩。因此，过冷的部门更冷，相对而言，过热的部门更热。就在这个时刻，又由于成本的不断上 升，也就是国外的进口通货膨胀使得成本不断上升。进一步又打击到二元经济中过冷的民营制造业，它的投资环境更加恶劣。&lt;br /&gt;&lt;br /&gt;同时又在这个时刻，政府推出了劳动合同法，劳动合同法的本身意义是重大的，我身为弱势群体代言人，我是非常支持这个方案的，但是这个方案的推出不能以双输 为代价，必须要以双赢为的代价才有意义。第一缺乏反方向的论证，第二缺乏试点，匆忙推出之后，中国过冷的民营制造业至少1/3以上造成严重打击。因此，过 冷部门的民营企业家面临的投资环境进一步恶化。所以汇率，成本、劳动合同法，我还没有讲到次贷危机，第四，政府不断加大宏观调控的力度。我不断呼吁这是错 的，政府到现在才听进去，可是去年已经是数次提高利率，宏观调控的接连推出大力度的推出，目的是什么？目的是降温，可是全国学者都搞错了，中国经济没有过 热只是30%推动GDP工程的是过热的，而宏观调控推出的结果是彻底打击了过冷的民营制造业，有的时候想想这个事情觉得很难过，很悲哀的，这么明显的事 情，大家看不懂，我看懂了以后说郎咸平是有争议的人物，这就是我们学者对我的态度。&lt;br /&gt;&lt;br /&gt;好了，就在这个艰难的时刻，政府加大力度宏观调控是什么结果呢？通过了三个管道进一步打击了民营制造业。第一个管道，是在宏观调控的压力之下，银行从过冷 的制造业部门大量收会流动性资金，去干吗呢？不是放在银行里，放在银行里还好，拿出来以后拿给过热地方政府基础设施建设，这种做法使得社会的流动性由过冷 的制造业透过银行体系转到过热的银行政府中去的，因此过冷的部门更冷，过热部门由于吸收了大量的制造业的资金变得更热，这就是宏观调控的第一个管道。&lt;br /&gt;&lt;br /&gt;宏观调控的第二个管道呢，不断提高利率，不断提高银行存款准备金率的做法。再加上前面讲的汇率上升、成本上升、劳动合同法推出，因此使得二元制造业中更干 不下去了，他们怎么做呢？所以民营制造业的企业家就把应该投资在制造业的钱不投资了。拿出来，打到过热的部门去干吗呢？炒楼炒股去了。这就是从06年到 07 年所开始的股市泡沫、楼市泡沫的真正因素，那就是二元经济当中过冷的制造业持续衰退，他所面临的因此各种因素不断恶化，他们更不想干了。更不想干的结果回 去炒楼炒股。&lt;br /&gt;&lt;/span&gt;     &lt;/p&gt;     &lt;p&gt;       &lt;span style="font-size:100%;"&gt;这 就是一开始，我告诉各位房价涨得最高的区域，通常是制造业最箫条的区域，这是第二条管道，第三条管道呢？简称海尔现象。什么叫做海尔现象就是处在过冷制造 业的企业像海尔的家电制造业投资经商环境恶化，所以它也不想干的，因此从过冷的部门筹集大量的资金打到过热的部门干什么呢？&lt;br /&gt;&lt;br /&gt;这三个管道，造成什么结果呢？我重复一遍第一个管道，你会发现，各地的建设是如火如荼地推行，而且代价是民营制造业的资金更缺乏，资金逆流掉，造成了过热 部门修桥铺路去了，第二个管道使得大量的制造业资金炒楼炒股造成中国GDP现象的表面繁荣，这是可怕的，因为这个表面繁荣配合第三个管道大量资金流入过热 部门造成整个资源的误导。第二个管道和第三个管道的配合结果使得我国表面的繁荣，因此使得大部分，我不敢说是百分之百，差不多的、几乎百分之百的地产商， 在我今天讲话的这刻面临重大的危机。&lt;br /&gt;&lt;br /&gt;我前面讲的这一切现象，综合在一起，我相信你们从事企业的来宾，应该都听过，就是这么简单的。那么这种现象和流动性过剩有什么关系呢？胡说八道。讲到今天 我是那种水平的学者的话，我今天五秒钟讲完了，买股市股市泡沫，买楼楼市泡沫讲完了，不知道该讲什么了，我告诉你，我才刚开始，我还没有谈到次贷危机。&lt;br /&gt;&lt;br /&gt;我国二元经济已经将我国的经济发展带入到了一个箫条的经济，就算美国没有次贷危机中国经济依然下滑，危机照跌，楼市照跌，注意没有谈到次贷危机我们就已经 抗不住了，你去年看到的股市泡沫已经给各位敲响了警钟，可能你们问我，朗教授，二元经济都听懂了，听懂了吗？你一开始讲的我们的股市跟楼市反应的基本面是 对的，我就以股市为例，为什么这么问呢，怪他自己，怪他不听我演讲，不学习，如果06年来听都发了，08年听也可以，现在来不及了，那就用我前面讲二元经 济现象，回答我们主持人的问题，为什么你会这样问呢？&lt;br /&gt;&lt;br /&gt;   06年开始的股价大涨根本就不是尚福林说的股改，他胡说八道，他什么也没有搞懂，这点我都有点同情他，什么也没有搞懂，还搞这么多东西，现在我都不会生气了，还会义愤填膺地说，我无所谓，我也没有办法了。&lt;br /&gt;&lt;br /&gt;2005 年的时候我们透过媒体我警告尚福林千万不能推行股改，它是错的。你们也知道朗教授讲话是非常具体的，我过去讲什么情况下是成功的，什么情况是失败的，这个 话我不会讲，那是没有信心的学者搞的话，我很有信心，我说错一定会错，我说股改是错的，而且是百分之百错的，他不知道怎么回答了，箭在弦上，不得不发，什 么回答，我给他一个回答我说箭在弦上也得撤下，他不听我的。他说，那可能怀疑说，哎呦，既然朗教授说股改失败了，为什么06年开始国家大涨呢，我怎么会错 呢？我什么时候错了？我告诉你06年股价大涨的唯一原因就是二元经济已经开始生效，大量的制造业资金大量进入股市跟楼市。&lt;br /&gt;&lt;br /&gt;那么，股价大涨的现象到07年5月30号股指跌到3千点这个时候你们就应该来听我的演讲，你们相信别人说的八千点一万点，哪个时候你们买了什么股票啊？买 了二线蓝筹股是不是？所以从五月底到了11月从3千点到6千点你们买二线蓝筹的股民没有赚到钱，为什么没有赚到钱？因为当时拉动股指的都是大盘股，我们称 之为2：8现象或者是3：7现象，20%多的股票拉动了股指，从3千点拉到了6千点，这个二八现象和三七现象的二或者是三是什么股票呢？是地产，钢铁，水 泥，政绩工程、形象工程、大型国企，其他融资银行还有证券公司等等，没有错吧？你们是不是觉得耳熟啊？这不就是二元经济当中过热部门吗？&lt;br /&gt;&lt;br /&gt;   所以说，去年五月底到11月，股票市场已经完全反映了朗教授的二元经济，在这个时刻我是声嘶力竭地呼吁政府一定要解决这个问题。一定要开始救助制造业，因此这是制造业的回光返照。如果政府不出手救制造业到了，第二年制造业会大量的倒闭。&lt;br /&gt;&lt;br /&gt;   后来证明我讲的是对的，就在这个时刻我写下了中国经济的八大危机的文章。你们如果到这个时刻还不来听我的演讲的时候，11月也该来听了吧，也没有来听，11 月我在&lt;span&gt;北京&lt;/span&gt;发 言，媒体对我的发言不敢兴趣，他们情愿报导说某某学者说八千点到1万点，我在北京发言，我是股价必跌，因为二元经济。你想向到了11月股指到了6千点是 20%、30%的部门拉动的，可以想想涨幅多快，这样快的涨幅一定要回调，所以二元经济中过热的部门一定要回调，而过冷民营制造业按照我当时掌控的数据是 迅速箫条，而且存在迅速倒闭的危机。二元经济中过热的部门一定要回调，股指一直跌，你根本不要怀疑，我还没有讲到次贷危机，次贷危机还没有来，我只是讲国 内的现状，只是告诉你们，目前全世界闹得金融海啸还没有冲击到你们，你们就已经到了这个地步了，你想想后面还有什么希望，这一切都是我们自己经济体系中孕 育出来的，和国际无关。&lt;br /&gt;&lt;br /&gt;为什么我在五月份的时候，我非常严肃地警告过全国股民，不要对奥运行情有幻想，中国根本没有奥运行情，而且在节目中，当这期节目散布得很广，很多人看到 的，我讲的具体到了什么地步，我呼吁全国股民，股价在奥运之前必跌根本没有奥运行情，为什么？因为，二元经济全面箫条、崩溃的结果会使得股价大幅下跌，就 像美国1929年一样，所以今天股价不断大幅下跌的现实意义，就显示着未来制造业持续箫条。今年三月份我在广州照片记者招待会，我呼吁政府救市我要告诉大 家，我们专家学者讲的都是废话，很多学者说政府不应该救市，让市场多元化，这些都是胡说八道。没有经历过社会主义的的血的资本主义，它们是最市场化的一 点，美国政府干什么，美国政府还不理解市场吗？他们是真正的资本主义国家，是真正的市场化国家，请你看看美国政府在干什么？美国政府在救市，我们呢？市场 化，让市场解决吧，胡说八道。这些学者，我一直不想想他们。现在不想他们不行了。你说作为一个学者，就算你不做研究也理解，你胡说八道讲的话，也应该是一 半对一半错的，你猜的，丢一下铜板的方法，像我们的学者每次都讲错那是更难的。（掌声）&lt;br /&gt;&lt;br /&gt;像我每次都讲对，很不容易，每次都讲错更不容易。为什么救市？美国很蠢吗？不懂市场化吗？美国人才济济为什么要救市，为什么三月份开始要救市，我告诉学者 你根本不懂市场，那么在今天这个场合也是我第一次发言，谈到这个话题，我觉得对你们在座的企业家非常重要。因为，今天的中国已经进入了一个前所未有的工商 链条的时代，什么叫做工商链条？也就是说10年前我们从过去5 千年积累的农耕社会走向了工商链条的社会。&lt;br /&gt;&lt;/span&gt;     &lt;/p&gt;     &lt;p&gt;       &lt;span style="font-size:100%;"&gt;工商链条有什么特性？那就是一个部门出现问题之后，一定会产生多米诺骨牌效应的连锁效应的产生。所以我就以我刚才讲的故事，给你们做一个解释就明白了，为什么我们的消费这么多，只有30%，原因是什么？我们中国社会保障体系缺乏的，包括医疗、&lt;span&gt;教育&lt;/span&gt;、 住房的问题没有得到彻底解决之前，社会保障体系是不足的。所以这个社会保障体系不足，你以为不足就不足啊，你以为不足就是看不起病啊，如果只是看不起病就 好了，那就不是工商链条。农耕时代看不起病就看不起病算了，现在工商链条时代一旦看不起病的结果，必定产生农耕时代所没有的多米诺骨牌效应。&lt;br /&gt;&lt;br /&gt;请你想在工商链条时代，当你看不起病之后你会怎么做？下一步是什么？你不敢消费了，你要存钱，万一你父母得了病怎么办？你小孩出国怎么办？你住房怎么办？ 有了这些问题让你不敢消费。下一步骨牌呢？不敢消费使得我国消费非常低，占了GDP35%，下一张骨牌一定是生产过剩，再下一张骨牌必定是出口创汇，再下 一张是积累大量的美元外汇，再下一张是人民币汇率升值，再下一张打击了出口制造业，再下一张出口制造业倒闭，再下一张更不敢消费，再走一圈，这是无止境地 恶化循环，这就是工商链条时代的特征。&lt;br /&gt;&lt;br /&gt;我呼吁政府应该怎样做？应该在股市泡沫楼市泡沫的时候，最大的力度救助制造业什么目的？斩断工商链条，也就是说进入股市和楼市的资金是来自制造业的季度衰 退，政府应该做的是我在制造业部门设立防火墙，斩断工商链条，直接救助制造业，只要把制造业的营销环境搞上取的话，资金自然回流回来，一旦斩断的结果就不 会有股市泡沫，不会有楼市泡沫，就不会有现在一切的问题出来。各位听懂了吗？政府应该做的是由政府出面斩断工商链条而设立防火墙，这就是我前年开始一直呼 吁政府做的事，都听不懂。一直到事情崩溃之后，才说朗教授都说过。&lt;br /&gt;&lt;br /&gt;美国政府在干什么各位来宾想想？美国，是一个最资本主义的国家，没错吧？是最强调市场化的国家没错吗？而且共和党更强调，美国政府7千亿美元救市计划的本 质目的就是斩断工商链条，也就是当金融部门出现问题的时候，立刻设立防火墙来斩断工商链条，由政府工资7千亿直接救助那些受到影响的金融机构，你只有把他 们救活的以后，整个社会才会安定，否则按照我们中国这种专家、学者的水平的话，市场化不要干涉，你不要干涉结果，金融机构一旦崩溃产生大量的失业，使得美 国老百姓信心丧失，下一步干什么不敢消费了，下面是什么？制造业产生危机，再下一张骨牌生产力减少，再下一张骨牌失业，再一张骨牌不敢消费。好了，开始一 个恶性循环，所以说&lt;span&gt;金融危机&lt;/span&gt;会 由于美国政府的不作为，会产生实体经济的危机，各位听懂了吗？所以美国政府在干什么，比任何政府都要首先斩断工商链条。就是怕金融危机波及到实体部门，而 我们中国的危机来源不是金融危机而是来源于制造业的危机，我们没有斩断工商链条的结果，是使得制造业的危机波及到股市和楼市，从而造成去年的股市和楼市泡 沫把各位都套牢了。主持人问的是对的，我一看你的面，我就知道差不多都被套牢了，为什么呢，就是因为我们的政府没有斩断工商链条。为什么没有斩断呢？专家 学者所误导，为什么他们误导呢，他们根本不懂，农耕时代培养出来的学生没办法，都是错的。&lt;br /&gt;&lt;br /&gt;我相信我跟你们这样沟通以后，大家马上就懂了是这样一回事，原来美国政府正在斩断工商链条。我最近我看到美国的形势发展，我就告诉各位，我前面跟各位讲的 讲到现在，你注意到了没有，我一再告诉你，美国的次贷危机还没有影响到中国。就算是美国从来没有发生过次贷危机的话中国的股市也是这样跌，中国的楼盘也是 这样跌，因为中国制造业持续衰退结果，必然拉动股市和楼市的下滑。情况会逐日的恶化，不是逐年的恶化，也不是逐月的恶化是逐日的恶化，每天都会恶化。&lt;/span&gt;     &lt;/p&gt;     &lt;p&gt;       &lt;span style="font-size:100%;"&gt;我 记得昨天一个学者说，回应我的话对那种唱赞歌的人你应该警醒，整个国际金融形势比任何一个人想的都要难得多，但是没有冲击到中国，就在没有冲击到中国的时 候我们的楼市也产生了重大危机，我刚讲了股市，现在讲到楼市，哪里的企业倒闭多，哪里的资金快速流入楼市，比如深圳，大量制造业的资金打入深圳的楼盘，而 且，它的切入角度是高价楼盘。为什么？从中国台湾、亚太等地区的楼市历史来看，而长期依然看涨。06年初是1万元/平方米，到了年终是四万元/平方米，大 量资金流入，炒到了高端楼盘，附近的中低档楼盘随之水涨船高，真正有泡沫的是中低档楼盘，他们水涨船高，缺乏资金的支援，一旦今年箫条之后，跌价的是中低 档楼盘，高档楼盘依然坚挺，那就是地产商的资金链即将断裂，好了，即将断裂的结果就是高档楼盘抗住，那就是深圳目前的现状。&lt;br /&gt;&lt;br /&gt;   在北京跟&lt;span&gt;上海&lt;/span&gt;情况是一样的，高端楼盘价格上去以后，中低档楼盘随之水涨船高。所以北京也好，上海也好，中低档楼盘目前跌价最多，高端楼盘则不是。北京为例，三环之内，根据我的数据，还是为早，顺义跌得更多，就跟深圳的关外一样，上海也是一样，内环有行无市。&lt;br /&gt;&lt;br /&gt;   最近潘石屹同志卖得不错的，我们查了一下他的资料，买潘石屹的资金51%来自山西煤老大，冲击了各级楼盘，冲击到了价格大涨。我要告诉各位，地产，长期而来，相对股票，以亚洲其他国家和地区为例，包括香港和台湾为例，它还是比较能抗通货膨胀的。&lt;br /&gt;&lt;br /&gt;   那么很多人问，你这样讲我都听懂了什么，楼市泡沫股市泡沫我该怎么办？我应该卖还是怎么办？你千万不要问我我不是股评家也不是卖地产的，我只是告诉你你所看到的现象背后的本质原因是什么？你要怎么做？你自己要去做判断。&lt;br /&gt;&lt;br /&gt;那么各位再想想，下面一个问题就是理财的问题，当你了解了我前面所讲的所有的理论以后，说花一点钱怎么办？我请各位来宾注意，在经济大箫条的前期你不要有 幻想，你千万不要想到去赚钱好吗？这是一个很大的思想转变，你在这个时刻能够保本就谢天谢地了，而且中国根本就没有理财的问题，什么媒体的理财专刊，根本 不要看，都是错的。你有什么理财的问题，存银行、通货膨胀、买股票，股价大跌。你有什么理财的问题。好，不要问我了，是不是该买黄金，买外币，我跟你讲这 个问题问的都是错的。你今天不要问我朗教授应不应该买黄金，应不应买欧元，不要这样问，这都是在平时经济稳定的时候问的，在这个时刻你不要这样问，我建议 各位，听清楚，如果你想投资外币的话，你要你买一百块欧元必须买同样的美元，保证什么呢？保证不赚钱，保证不赚钱的结果就是保证不亏欠，买黄金也好，一定 要买黄金计价单位的货币，美元，目的就是不赚钱。你能够在这一两年期间能够不损失。那么从09年开始就会有大量的机会，而且机会无所不在，到处是机会。&lt;br /&gt;&lt;br /&gt;经济箫条不是坏事，经济箫条可以孕育出无数的英雄豪杰来，平时不一定有机会，谁能够抗过这一段，谁就能够拔地而起，再跟各位讲一个很有意思案例，作为我第 一短演讲的结束，请各位来宾思考一下，我国上市公司的负债比例多高？而且这种负债比例是由于我们30年改革开放的成功，我们的企业家我们的官员从来没有经 历过大箫条的磨难下他们的负债比是多少？他们把世界看得太简单了，我们上市公司的资本负比例是100%到300%，资产负债比例是50%到70%。我以资 产负债比例为&lt;span&gt;分析&lt;/span&gt;，这些没有经历过大磨难的企业，上市以后他们的负债比例高达100%到300%的负债比例的。&lt;/span&gt;     &lt;/p&gt;     &lt;p&gt;       &lt;span style="font-size:100%;"&gt;我 跟各位来宾跟我一起到香港去，香港非常有名四大天王，李嘉诚、李兆基、郭柄向、郑义同，这四个人是搞地产的，叫做四大天王。他最喜欢讲其中的一个天王，四 大天王都比我们很多的企业大一百倍，而且香港有比较完善的司法制度，也有更为良好的金融体系。那么，请来宾想一想。这一些比你大一百倍以上的企业在一个信 用良好的区域，法制建设完善的香港更有能力借钱吧，可是这些人不同的地方在哪里呢？他们是经历过大风大浪的人，起码是经过四个大箫条，这些曾经经历过数次 大萧条的四大天王他们比你大一百倍，他的法制建设完善的香港以及信用良好的香港本来可以比你借更多的钱，你们猜一下他们的资产负债是多少？我们是100% 到300%，他们四大天王是20%，你可能说有钱不借，傻得吗？你说李嘉诚会借不到钱？你借不到钱是真，而且我告诉你不是四家平均20%，是每一个天王的 资本负债比例都是20%，不可想象的结果。而且，这四大天王，总资产当中以现金形势保有的比例高达5%到15%之间，你们呢？总资产中以现金形式保有的比 例高达5%到15%之间，你们呢？为什么？我曾经问过他们其中一个人，他们说，这一生成功的原因是因为保守。&lt;br /&gt;&lt;br /&gt;一个企业家，能够赚多少钱没有什么了不起。而且在我们成功了30年的改革开放孕育出无数赚容易钱的企业家，这些企业家你只要看看我们上市公司负债比例，我 就可以告诉你都是没有经历过大磨难的企业家，把世界看得太简单了，什么才是我心目中最睿智的企业家在这个时刻显得更重要的，那就是风险、管理最好得才是最 好的企业家，风险管理做的好，我怎么看出来呢？财务报表一看就看出来。一个注重风险管理的企业家一定是随时随地保持着最低的负债比例，随时随地保持着最高 的现金流，虽然公司的发展会受到限制，可是无所谓，因为只有保守经营稳健经营才可以帮助你渡过几次危机，你只要渡过两次危机不倒闭的话，你就可以成为该行 业该地区的领头羊。这就是保守经营的实际。&lt;br /&gt;&lt;br /&gt;我今天把这个数据念给各位听，更值得我们关切的是什么？当这些人在做投资的时候他们怎么想问题的？他想的问题跟我们想的不一样，他们其中一个人这么说的， 当他要做A同志的时候他首先想的不是A能够赚多少钱，而是A如果做垮的话能够赔多少钱？如果做垮之后原来的企业有没有办法弥补这个损失？如果可以的话他才 可以做，如果不可以的话他就不会做，也就是说他做任何投资的时候首先想到的是原来的企业有没有可以互补的现金流，也就是说新的投资现金流一旦断裂有没有现 金流刚好可以弥补，你看到没有，人家在做这种投资，为什么这么谨慎？风险感觉意识是最重要的。做一笔投资随时想到有没有更好的项目跟它做互补。什么是互 补？就是你坏我好，我坏你好可以互相抵消，按照我自己的数据，我发现四大天王他们的互补使他们的公司风险减低为多少？他们每个项目都有互补的项目，所以风 险平均减少了10倍。&lt;br /&gt;&lt;br /&gt;那么你想想，这四大天王所以能够成就这四大天王，第一，最低的负债比例，第二最高的现金流，第三，他们是及其保守而且互补型，投资保证可以对抗风险，所以 他才可以走得这么稳。那么，他们写的报告呢？你们有没有写过可行性报告，你知道什么是可行性报告呢？就是找进各种莫名其妙的理由来做，你应该怎么写，你应 该写不可行性报告，我想奉劝各位来宾，你把我的演讲听懂的话可以救你的命，在这个时刻你应该写不可行性报告，如果找了这么的的理由还是不充分的话你再做还 是来得及。&lt;br /&gt;&lt;/span&gt;     &lt;/p&gt;     &lt;p&gt;       &lt;span style="font-size:100%;"&gt;因 此，今天我在上半场给你总结的，你从今天开始要怎么做，第一有可能的话，尽量减低负债的风险，第二尽量收回欠款，积累大量的现金流，第三不要做任何形式的 投资，你把我的三点把握好了，你才有可能度过即将来临的经济危机。那么我们休息15分钟回来之后我就把各位带向国际金融，好不好？&lt;br /&gt;&lt;/span&gt;     &lt;/p&gt;     &lt;p&gt;       &lt;span style="font-size:100%;"&gt;&lt;strong&gt;主持人：今天上半场的演讲就到这里，感谢朗教授。首先朗教授以我为例，举个例子非常容幸，而且告诉我说，今天我犯了一个大错误，在这里我也指出朗教授最大的错误就是来烟台来晚了，大家说对不对？让我们一起期待朗教授下半场的演出，休息15分钟。&lt;/strong&gt;&lt;/span&gt;     &lt;/p&gt;     &lt;p&gt;       &lt;span style="font-size:100%;"&gt;主 持人：对于期盼，朗教授的下半场的演讲而言，这个时间感觉更短，我们确实非常认真在听我们朗教授的演讲，不过我个人觉得还是稍微有一点点的遗憾，哪呢？整 个演讲的过程中我们还是非常遗憾地听到了手机的铃声，所以我真的希望下半场的演讲过程中，亲爱的朋友能够将自己的手机打成静音或者是震动的状态，这是对朗 教授最好的尊重，在朗教授走之后我说了一句话，朗教授可能没有听到，现在朗教授已经坐在了自己的座位上，朗教授说他从来没有犯过错此外，但是我说他只犯过 一个错误，就是你来烟台太晚了，如果你早来烟台一年的话，至少我估计我的两个月辛辛苦苦攒下来的钱，还是两年的钱不会变成两个月，指出来我的错误，但是朗 教授知道各位都套牢，但是各位和我一样，都找到了继续下去的信心，到底朗教授会让我们的信心百倍增强，我们让我们彻底的绝望，让我们一起来聆听。再次掌声 有请朗教授！&lt;br /&gt;&lt;br /&gt;朗教授：其实这也不是我的错，是阳光100的错，你们怎不早点叫我过来，我们两个人都没有错，搞了半天，刚才主持人给了我很大的压力，他说下半场的演讲， 能不能为各位指出一条解套的方案，我不知道怎么解套，我的水平不够，说不定我越讲越绝望都可能，你们还敢听吗？&lt;br /&gt;&lt;br /&gt;我前面讲到现在，还没有谈到次贷危机，也就是说告诉各位，就算没有次贷危机，我们中国经济发展也是这样的结果，所以，我们的问题比欧洲、比英国要严重得多 得多。我们不但有二元经济所导致的民营经济的全面箫条，我们还有不可知的未来金融海啸的冲击。那么当然这个所谓的美国的次贷危机已经造成了很大的影响，可 是我相信很多来宾，对于次贷危机为什么会发生以及它的冲击有多大？如何在我前面演讲的基础上更进一步阐述我的观点。那么最近我看了很多媒体的报道讲的不太 正确，也想透过这个场合告诉大家到底资本主义出了什么问题？&lt;br /&gt;&lt;br /&gt;以前在美国做房屋贷款是这样做的，这帮人在做，这些人并不是信用卓著，通过一些中介，负责帮银行收集资料做第一关的审核，那么中介把资料交给银行。银行在 做第二次的审核，通过以后，银行把钱直接放贷给借款人，银行比如说借出一百万，银行就少了一百万，为了让资金充裕，就把一百万的债权卖给你，你们说熟悉的 房地美跟房利美，就把一百万切成一千块，一千块一张的债券卖给全世界包括中国政府，卖的三千七百亿，总共差不多5万亿，这个过程本来是非常好的，信用卓著 的借款人把资料给银行，银行通过把钱借给借款人，再把债券转给房利美，再切给1000块的债券卖给大众，所以银行不缺资金，房利美拿回一百万，最后的债权 全部由社会所承担，这个社会是广义的社会，包括中国政府包括欧洲社会包括美国的大众，这是一条非常完美的链条。&lt;br /&gt;&lt;br /&gt;可是，这么多年来，美国华尔街的贪婪，让这条链条彻底的变质，怎么变质？第一发明的次贷，次级贷就是允许财务报表不好的人，收入所得不够的人，信用不够的 人依然可以买房子，如何透过第一道中介呢，就开始很像我们的银行，开始造假，学坏很快，学好不容易，拿一些假资料，我们做的很多了，骗银行我们骗多了，造 一些假的资料，拿去忽悠你，银行所有的分析根据假的资料，所以通过审核把钱借给了借款人，银行拿这些有问题的次级债卖给房利美，他们根据这些一百万的次级 债，切给一千块的债券卖给大众，中介为什么会造价，就是资本主义赖以为生的信托责任，在华尔街的贪婪下荡然无存。信托责任才是资本主义的灵魂，当中介机构 一旦缺乏信托责任的下场就是整个链条被污染，只要借款人还不起债，银行债券就是差了，银行把差的债权卖给房利美，他们又发行债券卖给大众，会使得房利美还 不起债。因此，造成破产现象。&lt;/span&gt;     &lt;/p&gt;     &lt;p&gt;       &lt;span style="font-size:100%;"&gt;现 在美国政府在做什么呢，直接进来救助房利美的银行，他们基本上都是受害者，直接拿钱帮他们付利息，否则后果不堪设想，各位听懂了吗？所以次贷危机的真正原 因来自信托责任的破产。你们千万不要小看这次危机，因为除了次贷危机以外我发现美国还有万亿的次次债，比如说卖热狗的、毒品的，这些人他们也可以买房子， 这些人叫做次次贷也可以透过无聊的中介机构伪造一大堆的财务报表卖给银行，银行卖给房利美，这个是做爆炸呢？两年以后，所以美国政府透过7千亿的目的就是 修补这个次次贷带来的污染，解救房利美。&lt;br /&gt;&lt;br /&gt;但是各位请注意，这个影响太大了因为几万亿出去的，包括美国的AIG就是美国的国际保险公司，这个影响已经是危及全世界，而且更可怕的是这么多年来，为什 么中国的经济成长这么健康？为什么中国这么严重的产能过剩，虽然是牺牲了环境、资源、劳动者的情况下，大量的产能过剩为什么还能存在，为什么经济不崩溃， 原因是以美国为首的西方经济他们负债消化这些产品，也就是高度的负债，所有的美国人都在借钱，美国公司美国政府都在借钱，然后大量印发钞票，购买我们中国 出口制造业的产品。只要美国这链条一断裂，美国人不再购买产品以后，中国过剩的产能危机立刻爆炸，为什么没有爆炸呢？就是美国人不断借款，购买我们的产 品。&lt;br /&gt;&lt;br /&gt;但是，不断地借款不断借款没有关系，只要你的借款的品质是好的就没有问题，比如像以前信用良好的借款者借款没有问题，问题是今天链条被污染了，所以高负债 的情况下，一个被污染的链条，立刻产生重大危机，你们听我讲到这里，就应该要干什么？如果这个负债的链条，防火墙挡不住的话，下一步结果是什么？你想想， 也就是美国赖以生存的、以负债为主的大量购买中国产品的做法将立刻破产。好了，如果美国人不再购买我们的产品，我们这么多的产能过剩怎么办？请你们在座的 各位来宾你们来回答我一下，我们的消费只有30%，我们根本买不起，我们买不了这么多的产品，只要美国人因为经济危机不买的话，我们生产过剩的现象立刻爆 炸。&lt;br /&gt;&lt;br /&gt;我在这个时刻我根本就不想讲粉饰太平，我也不想取悦领导，因为我是真正爱国的，只有把这句话讲清楚。（掌声）只有尽早告诉政府它才能有英明对策，来宾们， 你们都听懂了吗？中国产能过剩的问题，因为全球的高负债得到的缓解，他们买了我们的产品。只要我前面讲的防火墙一旦破裂，老百姓的信心一旦丧失，不再以负 债的方式购买了，那么我们所面临的是企业的大量倒闭，我都不敢想。这一刻我比谁都紧张，我一直观察美国政府能不能成功救市，因为美国政府一旦失败你可不要 做地上官，你可不要嘲笑美国政府部门，我们中国将付出惨重的代价。由于我看得比谁都早，看得比谁都明白，我到两点才睡，不断打电话到美国询问最新的情况是 怎样？我得到的都是最新的讯息。不过告诉各位，我已经有了一些最新的讯息。我今天发现，美国的援助力不够，七千亿可能不够，你知道七千亿是什么概念吗？美 国老百姓每一个人为此付出了接近3千美元。可是我认为，还是不够的。所以上周，美国股市跌了20%多，这是从包括1929年那次股灾，同样大的跌幅。你知 道这意味着什么意义吗？可能大家没有这样的敏感度，我担心的是 1929年之后的经济大风波。&lt;br /&gt;&lt;/span&gt;     &lt;/p&gt;     &lt;p&gt;       &lt;span style="font-size:100%;"&gt;我 现在希望，英国政府也开始救市，你知道发生什么事吗？为什么救市不成功？而且上个礼拜全世界几大国家联合行动救市，同时注资，同时降低利率，各位记得吗， 可是最后结果是失败的，你知道为什么失败吗？因为，每一家金融机构拿到救助款之后，而且是利息非常低的救助款之后，他把钱压在手里，都在怕，借给你不还给 我怎么办？我对银行没有什么信心，所以也不借给银行，所以政府给我的流动资金，我压在银行里，既不给企业短期融资也不给银行，我全部压在手上，如果银行都 不拆借的话，我们全世界的短期融资怎么办？你怎么买原材料怎么发工资，你要靠短期融资，银行如果缺短期债的话，是无法生存的，否则资金会陷入周转不灵。&lt;br /&gt;&lt;br /&gt;目前的现状是怎样的？银行系统虽然接收了政府的救助，但是由于根本的问题解决不了，大家不敢从事短期借贷，下一步就是美国的制造业、美国的企业、美国的服 务业拿不到短期融资而全线崩溃。美国银行业会由于银行之间不准拆借、周转不灵，造成更多的现状。为什么这些银行不借？虽然拿到这么多钱的救助为什么不借？ 因为信心丧失，什么信心丧失？对于资本主义的信心丧失，我讲这句话有点可笑，你千万不要笑。&lt;br /&gt;&lt;br /&gt;最近欧洲政府包括冰岛，已经开始把金融机构国有化，为什么？因为银行信用已经破产，大家都不相信银行，甚至连银行也不相信银行，银行拿到钱也不拆借企业， 免得你们拿钱跑了。所以银行信用本身已经没有办法让系统运作了，因为银行信用不够了到最后逼迫英国政府、欧洲政府以国家&lt;span&gt;力量&lt;/span&gt;收 购银行变成我们痛恨的国有企业。你知道为什么这样做吗？因为以国家的信用担保，我保证还你钱，你只要以国家的信用担保，这家金融机构一定还钱，别的银行就 会借钱给他，各位听懂了没有？在我们民营化的时候，你发现全世界国有化，为什么国有化，就是重新利用政府的信用，给这个经济体系打下长期定数，你们放心的 去借吧？政府为你们撑腰，不但为银行撑腰，把银行收归国有，同时由政府印钞票向企业融资，你把你的票据卖给政府，政府拿钱买你的短期融资的票据，让你发 行，购买原材料，因此今天整个信用体系，破产的是各国政府出面实行全球的国有化，什么目的？重新向这个&lt;span&gt;腐败&lt;/span&gt;不堪的金融机构注入 最后一股政府信用。透过政府信用，透过政府的钱直接拆借给银行，透过政府的钱直接购买企业的短期票据，让企业拿到短期融资发薪水、买原材料。美国政府还没 有这样做。他们看在眼里，心很急。因为如果你不学习欧洲政府的话，没有政府信用在里面，整个金融体系会因信息不足而全面崩溃。&lt;br /&gt;&lt;br /&gt;这是今天上午得到的最新消息，我一直在想这个事怎么讲，我讲的是最前沿的，美国政府也在考虑要不要把美国金融机构变成国营企业呢，这和美国政府的民营理念 有悖不太愿意这样做，但是如果不这样做的，你的七千亿美救市计划很难成功，因为大家的信心丧失，我相信你们想问我一句话，你们问我说，朗教授政府信用是不 是最后一步？你们想不想问这句话？对的，这是最后一步了。如果问我下面一句话，如果政府信用也不行呢，完了。那完了，没有别的办法了。我都不想演讲下去 了。&lt;br /&gt;&lt;br /&gt;   走到这一步，整个金融体系的问题，会使得各国无力再以负债的方式成长，因此，就不会再以负债的方式购买我们产能过剩所制造的产品，听懂了吗？下一步就是什么呢？所以说中国&lt;span&gt;不可能&lt;/span&gt;幸免于难，我也请各位来宾密切注意这几天的发展，你们要随时随地按照我今天告诉你们的思路注意观察一下，你会发现今天两点开始，欧洲各国政府甚至我怀疑美国政府要大量实行全面国有化。否则，无法注入最后一道强心剂。因为资本主义的信心完全崩溃，信用体系完全崩溃。&lt;/span&gt;     &lt;/p&gt;     &lt;p&gt;       &lt;span style="font-size:100%;"&gt;你 看我讲到这里，大家鸦雀无声了，你们才知道事态的严重。竟然还有无聊学者胡说八道说明天会更好，大家放心。是看不懂呢，还是怎么回事儿？刚才主持人问我如 何解套，我不知道，我没有这个能力解套，因为我发现美国政府也解不了套，郎咸平什么东西，还问我：朗教授，我们该做什么投资，你疯了，我昨天早上到今天中 午很多企业家问我，我们应该投资什么行业，我一开始告诉你，你疯了，我当时讲你疯了，你可能觉得我在开玩笑，我讲到现在这样说你该理解了吧？&lt;br /&gt;&lt;br /&gt;你晓不晓得什么危机在你面前，全世界各国的政府现在已经拟定了三个方针：第一个方针，就是政府出面协助各个金融机构的负债问题渡过难关。第二个问题，充足 各个金融的资本，如果还不行，第三个，充足国有化，如果还不行有没有第四个，到这一天，防火墙会正式爆破，如果国有化解决不了问题，防火墙宣告爆破，我讲 的工商链条多米诺骨牌效应将一发而不可收拾，中国经济发展靠出口创汇，基本是依靠过剩的产能发展。都听懂了吗？&lt;br /&gt;&lt;br /&gt;当然了这个事件，未来是怎么走势我也无法预测。其实他们也是走一步算一步，以美国为首的西方国家作梦也没有想到连政府注入几千亿资金的结果还是无法救市。 因为，源自于企业的信念还是过窄，逼迫政府出来用政府力量帮助银行完成短期拆借，帮助企业完成短期拆借，帮助他们继续生存下去。现在各国政府正在用政府的 力量协助银行进行短期拆借，利用政府的力量协助企业进行短期融资，以维持一个正常的营运，而不要说发展。&lt;br /&gt;&lt;br /&gt;你们听完我的演讲之后，以后再听到学者有任何乐观的呼吁你不要听了，你心里要做准备，没有人希望最坏的情况发生，我告诉各位来宾，我第一个做的演讲是跟次 贷危机完全无关的中国经济问题。如果你们已经觉得日子很难过了，那么我第二个阶段的演讲将带来海啸般的冲击，我现在随时随地密切观察欧美各国能否有效斩断 工商链条，中国的出口制造业就是工商链条的重要环节。&lt;br /&gt;&lt;br /&gt;这也是为什么在第一场演讲完成以后，我告诉你们少投资，最少不要投资，减少负债，准备过冬。而且，像美国的财政部长鲍尔森以及美国的中央银行行长波兰克这 些都是赫赫有名的人物，像波兰克这个人是1970年代的博士学者，我是1980年代毕业的经济学家，那个时代毕业的学者跟我们这个时代不一样，哪个时代的 学者对于经济大恐慌本身研究得非常到位，不像我们80年代的学者是非常单纯的一批人，迷信市场的人基本上都是这批人，70年代的学家有非常强的政府道德责 任感，当时波兰克也就是美国中央银行的主席，他的博士论文就是 1929年经济大恐慌，他说当时美国之所以发生经济大恐慌就是因为没有设立防火墙。&lt;br /&gt;&lt;/span&gt;     &lt;/p&gt;     &lt;p&gt;       &lt;span style="font-size:100%;"&gt;中 国的企业、中国的制造业，在大海啸没有冲击之前为什么这样的不抗压，各位想想？所以我前面说了，第一，汇率的上升，第二成本的上升，第三劳动合同法，第四 宏观调控，这四件事情和我现在讲的第五件事情相比它们的力量是非常小的，也就是在汇率、成本、劳合同法以及宏观调控的冲击下，我国制造业如此不抗压，为什 么？这四项冲击远远比不上我刚才讲的大海啸。就算这四项小冲击，我们的制造业也抗不住，30%的企业倒闭，甚至到了年底有可能超过50%，我希望不会，政 府应该出来救企业，我诚恳地希望不会到50%，但是请问这四项冲击为什么我们企业抗不住？因为，我们和欧美各国的企业相比，我们有一个天生的缺陷，那就是 我们引以为傲的制造业大国误导了我们的政府部门，你真的以为我们是制造业大国吗？你在媒体上所看到的都是什么样的？都是错的，你真的这样认为吗？真正的制 造业大国是美国，才不是中国呢，我们是自己感觉良好。那么我们中国制造业目前在什么环境之下呢？我给你讲一句最形象的话，中国经济发展到最后中国取得了 GDP，美国取得了利润，也就是说我们制造业的格局就是创造的GDP，最后的利润全部被美国席卷，这句话什么意思，为什么我们这么不抗压，因为我们的制造 业不但破坏环境、浪费资源，而且是整条产业链中价值最低的过程。&lt;br /&gt;&lt;br /&gt;我以芭比娃娃为例，我们广东东莞所生产的芭比娃娃卖到美国是9.9美元一个，接近10美元，请问10美元减掉1美元的9美元是如何创造出来的？那就是美国 企业的灵魂，它透过6大块所创造出来，包括产品设计、原料采购、仓储运输、定单处理、批发经营、终端零售，创造出了9美元的产值，6大块加上中国一块的制 造，叫做六加一的整个流程就是产业链，我们这么多年的经济成长，我们取得了整条产业链的“一”，而欧美各国掌控了整条产业链的“六”，这个价值是怎么回事 儿？我们的制造业者在破坏环境、浪费资源、剥削劳工的基础上，我们每创造出一百万美元的产值，我们同时替美国创造出九百万美元的产值，我们辛辛苦苦创造出 一亿美国的产值，我们同时替美国创造出9亿美元的产值。因此，中国越制造，美国越富裕，美国席卷了90%的价值。&lt;br /&gt;&lt;br /&gt;那么这一种生产模式叫做国际分工。而中国被分到了最差的一项，破坏环境、浪费资源、剥削劳工。我们现在常常以1.8万亿感到扬扬得意，你晓不晓得我们怎样 创造出这样的成绩？我们掌控着10%的价值，我们创造出1.8万亿美元的外汇，也就是1.8万亿除以10%等于18万亿，也就是我们出口制造业替全世界创 造出18万亿的产值，我们只分到了1.8，其他的都是欧美的，你知道18万亿是什么概念呢？那就是在座的各位来宾和全中国的工人80年所加起来的工资的总 和，这就是18万亿被国际分工席卷。&lt;br /&gt;&lt;br /&gt;所以我常讲，今天西方帝国主义对中国的掠夺和19世纪免费掠夺非洲差不多，当时非洲是0%，现在中国拿10%，在我看来没有什么差别，至少非洲没有环境污 染等的问题，我们的10%伴随着污染环境，浪费的资源以及被剥削的劳工，由于你是处在产业链的最底端。因此你特别抗压，因为真正掌控定价权的是整个产业链 的六，一是不掌控定价权，所以你能不能想象，欧美各国尤其是以美国为首的欧美国家，不但席卷的90%的利益，而且掌控着我们的定价权，我们不掌控。这就是 为什么，创造了汇率，成本、劳动合同法以及宏观调控之后我们的企业必须全力承担这些成本，因为我们不掌控定价权，我们无法提升售价，各位都懂了吗？这就是 为什么我说的投资营销环境急速恶化，因为你不掌控定价权。&lt;br /&gt;&lt;/span&gt;     &lt;/p&gt;     &lt;p&gt;       &lt;span style="font-size:100%;"&gt;到 最后的结果，大家不想干了，不想干的结果就像你们一样炒股去了，还被套牢了，想想这都是错的，你看，美国，掌控着定价权，透过6+1的6席卷了90%的产 值，这种情况，他们竟然发生了次贷危机，你能不能想象他们的防火墙一旦破裂以后，洪水将席卷90%的产值，想到了没有？我前面跟大家讲的就是说防火墙破裂 之后会影响到这个行业、这个行业，现在我把这个数字告诉你，美国防火墙破裂的结果冲击到以美国为首的90%的产值。然后再冲击到中国的10%的产值。&lt;br /&gt;&lt;br /&gt;我就是把第二段演讲的前半段全部给你量化。因此，美国、欧洲的做法三步骤：第一保护银行的债权，第二保护银行资本金，第三全部国有化，如果能够斩断工商链 条的话，美国所创造的90%才能保存住。如果抗不住的话，全部席卷90%，只要冲击90%，就同时冲击我们的10%。所以现在已经不是一个金融危机的问题 了。各位来宾都听懂了吗？&lt;br /&gt;&lt;br /&gt;那你可能问我了。那样我们这么多年的产业政策没有想到这个吗？我告诉你没有。我们这么多年的产业政策呼吁企业利用我们的廉价劳动力、呼吁企业品牌升级、呼 吁企业产业升级，没错吧？我告诉你，都是错的，因为真正的竞争力来源于6+1的高效整合，我们应该用政府的力量让我们的企业做成6+1的高效整合才能掌控 定价权。只有掌控定价权我们才有生存的机会。&lt;br /&gt;&lt;br /&gt;   可是目前我们的制造业是大量的倒闭。那么请各位来宾想&lt;br /&gt;&lt;br /&gt;一想。像郎咸平这种水平都会看得明白的事，你们认为美国政府看不明白吗？你相不相信，美国政府的要员比我聪明得多得多，我已经够聪明得了，他们比我还聪 明，当然你不一定相信，你说朗教授谦虚了，今天这个年头还能自认为自己不足的人太少了，中国人牛人太多，不知道还不行了，连我这种水平的人我都看得这么清 楚，何况美国。&lt;br /&gt;&lt;br /&gt;这位女士说对了大量热钱进入中国，大量收购中国的制造业，为什么？中国的制造业1，美国的产业链是6，6不能没有“1”啊，听懂了没有？如果1崩溃的 话，“6”也一定会崩溃，“6”一定有“1”做基础，才能发展，如果我们不生产芭比娃娃卖给美国，它怎么能创造出6的产值呢？我再一次告诉我们的地方政府 你们必须救自己。“1”最重要了。因为我们的“1”正在被大量的收购，我觉得这位来宾比我聪明，他已经把我结论讲的差不多了。&lt;br /&gt;&lt;br /&gt;中国进出口总额的55%都是外资，中国高科技出口的87%是外资，中国的汽车高端零配件90%是外资，中国你们吃的粮油85%是外资，中国山东、河北的几 个粮食局已经被外资收购了，知道吗？中国的养猪的产业链某条产业链被收购了。这就是今天你所面临的格局，你知道这些数据吗？你可能都不知道，为什么不知 道，因为你们从来不介意，我今天演讲的时间特别长，我已经把这些全部讲了，我们就算保有6+1的“1”，而且产值这么低的而且还是大量被收购的情况下，次 贷危机的冲击还没有开始。&lt;/span&gt;     &lt;/p&gt;     &lt;p&gt;       &lt;span style="font-size:100%;"&gt;可 是这些现象的原因就是中国的经济成长是靠着推动GDP所拉动，就是30%的部门透过钢筋水泥拉动的成长，70%都是过冷的制造业，这种特殊的二元经济 30%过热，70%过冷。经过了汇率、成本、劳动合同法以及宏观调控的冲击之下，过冷的制造业更冷，所面临的投资环境更加恶化。而过热的地方政府过热，我 记得上一次去山西，有的人说你看我们的山西最近发展很好，我说中国的哪个地方发展不好，哪个官员一上任也是搞建设，推动GDP的工程建设，透过30%拉动 GDP这就是各级政府做的事。越这样做，越多的资源流入过热的部门，过冷的制造业为什么这么不抗压？原因就是我们已经进入到了一个前所未有的产业链的暂停 时代。以美国为首的欧美国家控制着整条产业链的“6”的，我们在破坏环境、浪费资源、剥削劳动的基础上我们创造的“1”，更严重的是这样使得我国的制造业 产生严重的生产过剩现象，而这个生产过剩现象透过美国这么多年的负债增长的形势全部被它吸收了，所以我们看起来是表面的繁荣，我们这么多的产品好像是更富 裕了，那个制造，你已经跟次贷危机牢牢挂钩了，因为购买你产品的原因就是负债，我们是靠美国的负债支撑起我们的出口制造业使得我们过剩的产能透过美国消化 掉，&lt;br /&gt;&lt;br /&gt;但是美国的次贷危机使得美国高负债的时代即将终结，你可以相信我。未来一定是负债比例大幅降低，因此对于中国产品的需求必定大幅降低，所以中国产能过剩的 现实情况将会曝露无疑，这个时刻就是次贷危机防火墙爆炸的时候，不但冲击了美国所能够掌控的90%的产值，同时冲击到中国只有10%的产值的过剩的出口制 造业，产能过剩的制造业。&lt;br /&gt;&lt;br /&gt;下一步是什么呢？我也不想讲了，因为你已经听懂了多米诺骨牌效应，下一步是什么呢？再下一步是什么呢？会形成一个恶性循环。大家怎么都不吭气了，其实你们 今天不应该来听我的演讲，不听的时候，模模糊糊过得挺好的，国家有吃有喝的，过得挺好的，一旦听懂以后再也睡不着了，相不相信我，你们每天晚上今天晚上都 会看凤凰卫视，看美国的次贷危机，国有化会不会成功，一旦失败，朗教授告诉我们的最后一招，一旦国有化失败全盘崩溃，回去不要老是看《汉武大帝》什么的连 续剧了，回去看看美国的国有化会不会成功。&lt;br /&gt;&lt;br /&gt;   主持人：朗教授的演讲到这里就结束了，接下来的时间就是我们在场的来宾向我们朗教授提问的时间，首先有请我们舞台左侧的朋友提问。&lt;br /&gt;&lt;br /&gt;   搜房网：朗教授你好，我是搜房网的网友提问一个非常实际的问题，就说在当前的情况下，如何能让自己日子保持得好一点，甚至过得更好一点。&lt;br /&gt;&lt;br /&gt;朗教授：过得更好一点不可能的，不要过得更坏就不错了，我建议各位网友各位来宾，注意在这个时刻千万不要想赚多少钱，能够少赔多少钱是真的。这是我告诉你 们的，如果你们想买外币保值的话，一定要买最保守外币，什么目的呢？不赚钱，也就是你买欧元一定要买等量的美元，保证不赚钱，也保证不亏钱，这是我给网友 的建议。&lt;br /&gt;&lt;br /&gt;   提问：我是烟台日报的传媒记者，我问一下，今天总体感觉世界一片黑暗，我们改革开放30年，次贷危机来了以后，会不会是辛辛苦苦30年，会不会一夜回到改革前。&lt;br /&gt;&lt;/span&gt;     &lt;/p&gt;     &lt;p&gt;       &lt;span style="font-size:100%;"&gt;朗教授：这个问题问得太好了，这个不是我造成的该黑暗就是黑暗，该乐观就是乐观，为什么你们来听我的演讲，为什么大家欢迎听我的演讲，我是讲实话的，有良知的学者我不想骗你们，如果你认为是悲观就是悲观，但是&lt;span&gt;事实&lt;/span&gt;只有一个，我今天给你讲的是事实，只要你要怎么做，千万不要问我，该不该炒股，这个我是不回答的，你只要了解了我讲的所有故事，该有的事你自己做判断。&lt;br /&gt;&lt;br /&gt;提问：我记得第一次听您的课是在北京，当时给我印象最深的是在北京，出了三个，你错了，你错了，你还是错了，今天听得比较多的是你疯了，包括今天的主题， 当时不是说您，我想说的是，因为在座可能更多的是我们的民营企业，包括房地产的一些行业，如果您是生在烟台，在这个企业之中，根据你的大的形势恩，我觉得 还是有机会，你刚才也提到乱世出英豪，我想提两个比较简单的，企业能否自救，下一步问题是如何自救。谢谢。&lt;br /&gt;&lt;br /&gt;朗教授：你的问题问得非常好，我想这样回答你，烟台，所受到的冲击远远小于广东、江浙。尤其是你们房地产价格是这个价位之下的话，你们所受到冲击也会远远 小于温州等地，如果冲击不这么大的的话，制造业本身需要烟台市政府的大力救助。那么，我这个时刻，我认为一个比较有效的短期的办法，是我们的制造业目前千 万谨慎小心，不要随意扩张产能，维持现状，继续改进你的效率，降低成本，同时更重要的是烟台的民营企业需要政府大力的救助，因为一切财富的基本来源来源于 企业，一定是企业赚钱了，才会给员工更多的薪水，只有员工拿到更多的薪水，烟台才会更繁荣，大家不要只看GDP，如果烟台只是少数几个城市，首先放弃 GDP 的理念，着重企业的利润的话，你就能排在名列前茅，就能更容易渡过难关，不要只看GDP，GDP不重要，政府能够把资源移到对企业的直接救助方面，这就是 对企业最大的帮助，也就是对烟台市最好的建设，这个需要一个思维的转变，什么转变呢？你不要认为救助制造业是违反市场化行为，你想想我今天的演讲，国有化 是目前全世界的潮流，我们如果能够未雨绸缪，透过政府的力量援助制造业渡过难关，将来烟台市一定能够更快上一个台阶。各位理解我意思吧？&lt;br /&gt;&lt;/span&gt;     &lt;/p&gt;     &lt;p&gt;       &lt;span style="font-size:100%;"&gt;提问：最近我们注意到十七届三中全会正在召开，好象是经过这样一个磨难以后，我们才认识到以前所谓的出口消费三辆马车的次序应该改改，改成拉动内需在前面，我们想听听朗教授对十七届三中全会的精神，怎样可以走出困境。谢谢。&lt;br /&gt;&lt;br /&gt;朗教授：大方向我们肯定是赞同的，但是你是提的什么内需？千万不要把国家的有限资源又拉到以GDP为主的资源，我们资源的是有限的，不要为了提升我们的 GDP又去大量建公路、桥梁又搞这个，最后是什么下场呢？就是把制造业的谨慎的资金投入到过热的部门，使得我们制造业更难，提升内需就是我们政府要学习欧 美各国的做法，将大量资源投入到与民生相关的制造业跟服务业上，这才是我们未来该走的路，我认为最迫切的做法是利用政府的力量协助制造业从过热的部门转入 过冷的部门，帮助制造业渡过难关。因为山东讲的是原则性的问题，我建议一个原则性的方法来回答你，我认为这是解决目前难题的方法，至于次贷危机的危机，我 们没有办法，我们只能是坐以待毙。&lt;br /&gt;&lt;br /&gt;   提问：目前很多的专家学者都在讲目前的经济状况下中国经济转型的很好的机会。&lt;br /&gt;&lt;br /&gt;朗教授：这是胡说八道。这些家伙站着说话不腰疼，不懂中国的经济，中国90%的制造业根本不可能转型，要转型就是破产，做陶瓷做肉干什么的的怎么可能转 型，不在于转型而再在六加一，如果高价收购养猪行业有没有让养猪转型，那么多的外资收购我们粮油有没有改成高科技，他们收购粮油、都在做六加一的产业链的 高效整合，我们传统行业没有错，升级是错的。你忘了养猪往哪里升？你讲，粮油怎么升级？要做什么呢？就在做这些公司收购我们传统制造业之后做的就是六加一 高效整合而不是产业升级，理解我的意思吗？&lt;br /&gt;&lt;br /&gt;   提问：中央在十七届三中全会提出经济有些扭转，如果将来有失去土地的农民会不会造成严重的社会问题。&lt;br /&gt;&lt;br /&gt;   朗教授：我知道你要问的是什么，我不想说的，你要想到，一句话，如果我国的制造业产能过剩的制造业一旦受到金融海啸的冲击之后你想到下一步是什么？大量的失业，你只能是吸收农村人口，别的话我不讲了。&lt;br /&gt;&lt;br /&gt;   提问：你一再强调国有化，我想问一下国有化和私有化的问题。&lt;br /&gt;&lt;br /&gt;朗教授：她问的问题是我们这么多年的改革是反潮流的，别人忙着退市我们忙着上市，这是一个学习的过程，并不是说四年来都在国有化，全世界的金融机构都是私 营的多，上市的多，这是为什么我们国家也走上这条路，只是今年的这两个礼拜开始变成国有化，我也相信这次演讲以后我们政府会有深刻的认识，重新做一个思考 私有化不是目的，目的是如何保护金融体系的问题，私有化也好，国有化也好都不是问题，只要保持稳定才是最大的前提，我们过去的私有化是有问题，我们是以私 有化而私有化，我们未来要为了维持金融稳定而实行国有化或者是私有化。欧美国家为什么要国有化并不是变成社会主义，他们注入最后一剂强心剂，就是提升信 心，国有化不是目的，所以大家不要搞错了不要认为欧美在国有化。我们就呼吁政府国有化，我们今天呼吁政府一定要在维持金融稳定的前提下，产生各种有益的方 案，达成金融稳定，维护老百姓的信心，目前欧美是国有化，中国最重要的是维持老百姓的信心，我们中国也要做这样的事，维持老百姓的信心，至于怎样做也是更 要考虑的问题，理解我的问题吗？&lt;/span&gt;     &lt;/p&gt;     &lt;p&gt;       &lt;span style="font-size:100%;"&gt;提问：在现在的经济环境作为经济学家与我们普通老百姓提一点建议，现在的情况下，投资房产还是比较保值的吗？&lt;br /&gt;&lt;br /&gt;朗教授：房地产我这样讲好了，以亚洲各国为例，包括香港台湾韩国为例，房地产在足够长的时间下，包括十年到二十年以上，相对而言比股票市场更能够保值，这 样波动是有的。我们现在会走上低谷也会，只要经济持续增长，情况会有所转换。你这样问的话，我相信回答是比较简单的，以台湾为例，台湾很富裕，原因和台湾 老百姓都喜欢购买房屋有关系。举个例子，我们观察到广东的倒闭的企业会不会到台北，130亿美金，投入到台北干什么？买房子。陈水扁住的特区有一半是广东 的台商买，有这种习惯，为什么这样的习惯呢？是台湾人致富的方法就是靠房地产。&lt;br /&gt;&lt;br /&gt;提问：你好，朗教授，我只是一个高二的学生，所以我的问题可能过于浅显，请您多多包涵，我想问的第一个问题，你很有自信，而且你也很高的预见性，你今天分 析的是我们现在所处的环境是多么灰暗，我想你为什么不分析为什么会这样分析，为什么不从美国的整个经济体系的建立过程中，从一战开始整个资本主义的经济体 系是怎样建立的，为什么不从根源上探讨？&lt;br /&gt;&lt;br /&gt;   朗教授：应该从资本主义的本质开始，但是今天的时间不够。&lt;br /&gt;&lt;br /&gt;   提问：第二个问题我想问一下，前一段有学者说我们当下是处在人口红利期，我们今天知道这个说法是错误的，当我们大学毕业以后，我们面临的问题将会更多，我们将面临我们的爸爸妈妈爷爷奶奶将要全部靠我们养活，以及到时候考大学将会更难，研究生会更多，以及&lt;span&gt;就业&lt;/span&gt;问题，我们现在应该做怎样的准备，才能在将来更好解决我们的人生，更好渡过我们的人生坎坷。&lt;br /&gt;&lt;/span&gt;     &lt;/p&gt;            &lt;span style="font-size:100%;"&gt;朗 教授：你请坐，非常好，这位女同学，你高二是不是？你能问这么深刻的问题，我们对我们的下一代感到骄傲，我非常重视年轻人的问题，我才站起来回答你。因为 她问的问题很深刻，我也希望我今天给你的回答能够改变你的一生，改变你的子女的一生，我非常严肃地站在这里，把你的两个问题做一个仔细的回答。我告诉各位 我们的民族，我们这么多的年轻人都在学什么？讲一句难听的话，我们大学教育本身就是在摧残创造力。我们在干什么，我们在培养解题高手，像你有这种思路的女 孩，甚至老师不会喜欢你，我必须以对你的重视表达我对教育的立场。我们中国的教育目的是在干什么，目的就是在训练你成为解题高手，我告诉你A我期待你讲 B，我告诉你C我期待你讲D，这么多年来，不要说朗教授的答案争议性很大，可是我们的大学教育没有培养学生这种能力，没有学生认为说这一切搞的都是错的， 为什么今天一开始我们告诉你我们的媒体做的都是错的，我告诉你我们要否定A，你问的问题都是错的，我凭什么按照你的意愿回答B，到最后大家认为我可能是一 个低端，偏激，甚至是争议性大，到最后发现原来思考的问题本身就是错误的，也就是说这种错误并不是一个学者专家的错误而是整个教育体系出了严重的错误，你 们的子女只要在读完本科的结果就会是这样的结果，你告诉他A就是A，不会怀疑A是错的或者是C的错的，各位理解我的意思吗？我希望每位父母把我的话带回去 给你的子女，怀疑告诉你的一切都是错的，只有这样才会培养你独立思考的创造力理解我意思吗？你问的我的第一个问题为什么这样重要，为什么按照我的思路讲， 为什么不从y来讲，比如谈谈的原则，起源说不定这些才跟我们讲的有关，我可以讲，我在别的场合也说过，我讲了一句话，这是整个欧美国家对于整个资本主义的 失望，这个话回答了你的问题，我从19世纪开始讲，我开玩笑说没有时间，但是我鼓励你这种说法，你高二学生没有听周杰伦的演唱会，你跑来听朗教授的演讲， 这点我给里最高的崇敬。&lt;br /&gt;&lt;br /&gt;看到高中生一追逐明星我就不舒服，我可能是嫉妒吧，这句话我也送给各位家长，为什么中国科技大的少年班是失败的，因为他们选拔的尖子学生根本不是天才是解 题高手，这就是为什么他们培养不出真正的天才，真正的天才要像你这样问问题才能成为天才，永远怀疑A。第二个问题问得非常好，我把她的问题重复一遍等她长 大以后，等她毕业以后，她的曾祖父增父母搞不好没有死，曾祖母、爸爸妈妈，结婚以后对方的一家人他们两口子养这么多的老前辈，哪个时候怎么办？最糟糕的是 什么你辛辛苦苦考完了大学以后，大学一毕业保证失业，养也养不起，如果这样发展的话，中国十年二十年会成为最贫穷的国家，像我们这样的老人很多了，像他这 样的也是，万一她找不到事怎么办？各位来宾有没有想到这个的严重性？她找不到事怎么办？我告诉你，为什么我要站起来回答你的问题，你已经帮我们所有的&lt;span&gt;大学生&lt;/span&gt;问 了朗教授一句话，我们为什么找不到事，我们连奉养父母的能力没有，我们为什么找不到事，因为产业政策都是错的，美国大学生比例这么高，我们如何搞教改，我 们搞教改的原因是我们看到的美国的大学生这么多，我们误认为如果我们同样生产这么多的大学生就可以透过人力资本扩张像美国那样富裕，因为我们到处都是大 学，最后发现今年培养出580万大专生，大部分找不到事。为什么？我有孙子了，我很关心这个事，我告诉你原因，那就是因为，真正需要大学生的是整条产业链 中的“六 ”制造业这个“一”是不需要大学生的。理解了吗？那么你们问我了，难道搞教改的人不知道吗？我告诉你他就是不知道。他完全不知道美国多学生比例这么高的原 因，是因为他们掌控着整个产业链的“六”，而我们掌控的是“一”，制造业本身不太需要大学生，因此烟台很多的工厂从董事长到保安没有一个大学生，有些工厂 不是所有的啊，因为制造业不需要大学生，产品设计、零售规划、仓储物流这个需要大学生，可是我们都不掌控。都由谁掌控呢？由欧美各国掌控着。&lt;br /&gt;&lt;br /&gt;这样一来的话，你会知道为什么中国长此下去会成为最贫穷的国家，因为我们掌控了价值链中最不重要的一个环节，因为掌控了6+1之后的“1”之后，带来的必 然结果就是给你们一个最差的自然资源，挖光、用光的自然环境以及剥削的劳工给你们了，我们这一代是最对不起下一代了。这是我为什么站起来回答你的问题。&lt;br /&gt;&lt;br /&gt;   主持人：我相信今天朗教授精彩的演讲给留下了深刻的印象，接下来，让我们站起来以最热烈的掌声欢送朗教授、感谢朗教授！&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-3290439225195651884?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/3290439225195651884/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=3290439225195651884' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/3290439225195651884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/3290439225195651884'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/10/blog-post_18.html' title='郎咸平在烟台的演讲'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-5902804216555160436</id><published>2008-10-16T14:01:00.002+08:00</published><updated>2008-10-16T14:05:43.362+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rubyonrails'/><title type='text'>Failed to build gem native extension</title><content type='html'>在使用gem安装的mongrel时遇到下面的问题。&lt;br /&gt;&lt;blockquote&gt;[root@localhost ~]# gem install mongrel&lt;br /&gt;Building native extensions.  This could take a while...&lt;br /&gt;ERROR:  Error installing mongrel:&lt;br /&gt;        ERROR: Failed to build gem native extension.&lt;br /&gt;&lt;br /&gt;/usr/bin/ruby extconf.rb install mongrel&lt;br /&gt;can't find header files for ruby.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Gem files will remain installed in /usr/lib64/ruby/gems/1.8/gems/fastthread-1.0.1 for inspection.&lt;br /&gt;Results logged to /usr/lib64/ruby/gems/1.8/gems/fastthread-1.0.1/ext/fastthread/gem_make.out&lt;/blockquote&gt;类似这样的问题大多是因为安装ruby的时候没有安装ruby-devel 。&lt;br /&gt;检查ruby-devel，如果没有的话补上。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-5902804216555160436?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/5902804216555160436/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=5902804216555160436' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/5902804216555160436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/5902804216555160436'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/10/failed-to-build-gem-native-extension.html' title='Failed to build gem native extension'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-7974129599271257828</id><published>2008-10-16T12:44:00.003+08:00</published><updated>2008-10-17T09:26:15.584+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='项目管理'/><title type='text'>Redmine</title><content type='html'>Redmine一个不错的项目管理web应用程序.使用Ruby on rails框架开发.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;主要功能： &lt;/span&gt;&lt;br /&gt;多项目支持；&lt;br /&gt;灵活的角色访问控制（自定义角色和其许可的操作）；&lt;br /&gt;灵活的问题跟踪系统（自定义问题类型）；&lt;br /&gt;日历；&lt;br /&gt;消息文档和文件管理；&lt;br /&gt;Feed&amp;amp;邮件通知；wiki和论坛&lt;br /&gt;SCM(SVN,CVS等)整合；&lt;br /&gt;对语言支持（支持中文）&lt;br /&gt;&lt;br /&gt;比起trac，Redmine的安装对于ror开发者来说太简单，对不了解ror的朋友来说也简单。总之比trac的安装要容易的多还多。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.redmine.org/wiki/redmine/RedmineInstall"&gt;installing Redmine instant&lt;/a&gt;。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-7974129599271257828?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/7974129599271257828/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=7974129599271257828' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/7974129599271257828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/7974129599271257828'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/10/redmine.html' title='Redmine'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-1999740992937776305</id><published>2008-10-11T11:27:00.004+08:00</published><updated>2008-10-11T11:33:00.295+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>免安装乒乓球游戏</title><content type='html'>&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="549" height="230"&gt;&lt;br /&gt;&lt;param name="movie" value="http://www.miniclip.com/swfcontent/gamesroom.swf"&gt;&lt;br /&gt;&lt;param name="quality" value="high"&gt;&lt;br /&gt;&lt;param name="menu" value="false"&gt;&lt;br /&gt;&lt;embed src="http://www.miniclip.com/swfcontent/gamesroom.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" menu="false" width="549" height="230"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;国外的游戏和国内的就是不一样...好玩&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-1999740992937776305?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/1999740992937776305/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=1999740992937776305' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/1999740992937776305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/1999740992937776305'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/10/blog-post.html' title='免安装乒乓球游戏'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-3130524976037773175</id><published>2008-09-28T20:51:00.001+08:00</published><updated>2008-09-28T20:51:46.089+08:00</updated><title type='text'>三规则</title><content type='html'>&lt;div dir="ltr"&gt;&lt;ul&gt;&lt;li&gt; &lt;p class="docList"&gt;Use source control.&lt;/p&gt; &lt;/li&gt;&lt;li&gt; &lt;p class="docList"&gt;Have a one-step build.&lt;/p&gt; &lt;/li&gt;&lt;li&gt; &lt;p class="docList"&gt;Track your bugs.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt; &lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-3130524976037773175?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/3130524976037773175/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=3130524976037773175' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/3130524976037773175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/3130524976037773175'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/09/blog-post_28.html' title='三规则'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-4771734196627582135</id><published>2008-09-26T09:32:00.001+08:00</published><updated>2008-09-26T09:32:35.731+08:00</updated><title type='text'>通过定制 Apache 获得最佳性能</title><content type='html'>&lt;div dir="ltr"&gt;&lt;p style="text-align: right;"&gt;&lt;font style="color: rgb(0, 153, 0);" size="6"&gt;&lt;span class="atitle"&gt;&lt;font size="2"&gt;收藏来自IBM DevelopWorks的一篇好文章，原文地址：&lt;a href="https://www6.software.ibm.com/developerworks/cn/education/web/wa-apache/index.html"&gt;https://www6.software.ibm.com/developerworks/cn/education/web/wa-apache/index.html&lt;/a&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;b&gt;&lt;font size="6"&gt;&lt;span class="atitle"&gt;&lt;br&gt; &lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;font size="6"&gt;&lt;span class="atitle"&gt;外部性能考虑因素&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;                 &lt;p&gt;Apache 在很大程度上依靠自身的配置来管理它的性能和负载，但是它需要借助于操作系统的帮助。本节主要关注如何检查操作系统，确保它产生最佳性能。&lt;/p&gt;                 &lt;p&gt;Apache 适用于许多种平台，包括 Windows NT/2000、Linux、所有风格的 UNIX、Sun 的 Solaris 和 BSD 系列操作系统。本教程主要关注如何通过优化 Linux 来提高 Apache 的性能。还将学习一些调整方法和技巧。&lt;/p&gt;                 &lt;p&gt;&lt;b&gt;&lt;font size="4"&gt;&lt;a name="N1010D"&gt;&lt;span class="smalltitle"&gt;内核&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;                 &lt;p&gt;首 先看看内核。您很可能正在运行 Linux 发行版附带的常规内核。尽管常规内核本质上并不差，但是它们常常在预编译时增加了对许多硬件的支持。这主要是为了方便安装，但是有经验的用户会重新编译内 核，去掉所有多余的硬件支持。毕竟，在 Web 服务器中为什么需要支持 ham radio 呢？它完全是在浪费宝贵的资源，这些资源本来可以用在更有用的方面。&lt;/p&gt;                 &lt;p&gt;接下来，访问服务器上的 /usr/src/linux/net 目录，并在文本编辑器中打开 TUNABLE 文件。这个文件列出了在编译内核时可以指定的所有参数。除非理解网络设备配置的内部原理，否则应该避免调整这些配置。对于 Linux 高手和有开发高性能系统经验的其他人，可以通过修改配置提高性能。&lt;/p&gt;                 &lt;p&gt;&lt;b&gt;&lt;font size="4"&gt;&lt;a name="osgen"&gt;&lt;span class="smalltitle"&gt;操作系统的一般规则&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;                 &lt;p&gt;现 在，脱离 Linux 的范围，看看适用于所有操作系统的一般规则。对于任何服务器，管理员首先应该做的事情是禁用高级电源管理（advanced power management，APM）模块。无论机器是桌面机还是服务器，APM 都会浪费 CPU 和内存资源，而其收益不一定会超过它造成的麻烦和问题。另外，您肯定不希望公司的 Web 服务器莫名其妙地转入睡眠状态。&lt;/p&gt;                 &lt;p&gt;禁 用了 APM 之后，还要检查是否正在运行其他不需要的服务。通过取消这些服务，可以向有意义的服务提供更多机器处理能力，减少资源争用问题对 Web 服务器的影响。可以关闭的一些重要进程，包括不需要使用的任何 Xwindows、KDE、Gnome 任务和其他程序。&lt;/p&gt;                 &lt;p&gt;还要通过命令行查看目前运行的所有服务及其进程 ID。在下面的 "优先级" 一节中需要这些信息。&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;font size="4"&gt;&lt;a name="priorities"&gt;&lt;span class="smalltitle"&gt;优先级&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;                 &lt;p&gt;可以使用 Linux 实用程序 &lt;code&gt;nice&lt;/code&gt; 和 &lt;code&gt;renice&lt;/code&gt; 调整剩余服务的优先级。可以使用这些实用程序提高服务器上 Apache 或其他软件的调度优先级，这样操作系统就会认识到它们比其他进程更重要。&lt;/p&gt;                 &lt;p&gt;例如，可以把 Apache（httpd）的优先级改为 -15，这已经接近上限（优先级从最高的 -20 到最低的 19）。可以从命令行使用这两个实用程序：&lt;/p&gt;                 &lt;ul&gt;&lt;li&gt;要想停止现有服务并以优先级 -15 重新启动它，可以发出命令 &lt;b&gt;nice -15 httpd&lt;/b&gt;                     &lt;/li&gt;&lt;li&gt;要想避免停止服务，可以发出命令 &lt;b&gt;renice -15 -p 1996&lt;/b&gt;                     &lt;/li&gt;&lt;/ul&gt;                 &lt;p&gt;这里的差异是 &lt;code&gt;renice&lt;/code&gt; 需要进程 ID（或 pid）。如上所述，可以使用 &lt;code&gt;top&lt;/code&gt; 					 查明 pid。&lt;code&gt;nice&lt;/code&gt; 和 &lt;code&gt;renice&lt;/code&gt; 是很灵活的程序，更多信息参见手册页。&lt;/p&gt;                 &lt;p&gt;另外，还可以使用 &lt;code&gt;irqtune&lt;/code&gt; 实用程序调整处理器响应来自系统中各种设备的中断请求的方式。&lt;/p&gt;&lt;p&gt;&lt;font size="4"&gt;&lt;b&gt;&lt;a name="N10163"&gt;&lt;span class="smalltitle"&gt;优化硬盘&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;                 &lt;p&gt;使用 &lt;code&gt;hdparm&lt;/code&gt; 对硬盘进行调优。可以用这个实用程序调整大多数 Linux 发行版中标准 IDE 驱动器的输入/输出控制。大多数选项适用于常规的 IDE 驱动器，但是一些选项需要 2.0.10 以上版本附带的现代 EIDE 驱动器。&lt;/p&gt;                 &lt;p&gt;如果使用默认的 Linux 安装，可以把 Linux 的硬盘访问速度提高 2 倍。&lt;code&gt;hdparm&lt;/code&gt; 对 IDE 硬盘最有用，但是一些 &lt;code&gt;hdparm&lt;/code&gt; 					 设置也适用于 SCSI。关于 &lt;code&gt;hdparm&lt;/code&gt; 实用程序的更多信息，请参见 &lt;a href="https://www6.software.ibm.com/developerworks/cn/education/web/wa-apache/resources.html"&gt;参考资料&lt;/a&gt; 中的链接。&lt;/p&gt;&lt;p&gt;&lt;span class="atitle"&gt;&lt;br&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;font size="6"&gt;&lt;span class="atitle"&gt;编译 Apache 的定制版本&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;                  &lt;p&gt;由 于 Apache 简单而且容易掌握，大多数 Linux 发行版都附带预编译和预安装的 Apache。Apache 大量使用模块，所以管理员可以启用许多不同的功能。每个发行版都附带一些可以马上使用的模块，因此开箱即用的 Apache 安装足以满足一般性 Web 站点的需求。&lt;/p&gt;                 &lt;p&gt;对于您的需求来说，通用的 Apache 配置可能不是最优的。下面学习哪些 Apache 模块可以提供您需要的功能，并构造一个高性能的 Apache 安装。&lt;/p&gt;                 &lt;p&gt;&lt;b&gt;&lt;font size="4"&gt;&lt;a name="N10191"&gt;&lt;span class="smalltitle"&gt;过程&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;                 &lt;p&gt;要想从头构造 Apache 安装，需要完成四个主要步骤：&lt;/p&gt;                 &lt;ol&gt;&lt;li&gt;决定合适的 Apache 配置。&lt;/li&gt;&lt;li&gt;从 Apache 发行站下载最新的二进制文件。&lt;/li&gt;&lt;li&gt;从源代码文件编译二进制文件。&lt;/li&gt;&lt;li&gt;测试新的可执行文件。&lt;/li&gt;&lt;/ol&gt;                 &lt;p&gt;如果测试没有问题，就把刚创建的文件放在系统中的适当位置。&lt;/p&gt;                 &lt;p&gt;&lt;b&gt;&lt;font size="4"&gt;&lt;a name="N101AC"&gt;&lt;span class="smalltitle"&gt;Apache 模块&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;                  &lt;p&gt;计划 Apache 安装的关键是确定满足站点需求所需的模块。Apache 附带大约 40 个&lt;i&gt;标准&lt;/i&gt; 模块（这些模块是 Apache 开发组认可的）。这些标准模块提供各种各样的功能，包括内容过滤、环境支持和辅助管理。在 &lt;a href="http://www.apache.org/docs/mod/index.html"&gt;http://www.apache.org/docs/mod/index.html&lt;/a&gt; 的 Apache 文档中可以找到所有标准模块的名称及其说明（参见 &lt;a href="https://www6.software.ibm.com/developerworks/cn/education/web/wa-apache/resources.html"&gt;参考资料&lt;/a&gt;）。&lt;/p&gt;                 &lt;p&gt;Apache Module Registry 是一个很好的额外资源，它提供标准模块之外的其他模块。这里提供的模块可以解析身份验证和参数、通过 Jserv 和 Jakarta 项目解释 Java ，并且支持 Python 和 Tcl/tk 等编程语言。&lt;/p&gt;&lt;p&gt;&lt;font size="4"&gt;&lt;b&gt;&lt;a name="N101BE"&gt;&lt;span class="smalltitle"&gt;Mod_so&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;                  &lt;p&gt;一个值得关注的模块。&lt;code&gt;Mod_so&lt;/code&gt; 模块使 Apache 能够在运行时调用其他模块，这样就不需要把其他模块编译到 httpd 二进制文件中。如果管理员需要在系统上运行多个不同配置的 Apache 实例（可能监听不同的网络接口），常常会使用这个功能。&lt;/p&gt;                 &lt;p&gt;每个实例可以调用自己的模块（在这个上下文中称为&lt;i&gt;共享对象&lt;/i&gt;）。管理员只需关注一个 Apache 安装。无论是编译为共享对象，还是静态地编译到 Apache 二进制文件中，大多数模块的功能是相同的。&lt;/p&gt;                 &lt;p&gt;要想进一步简化模块的动态调用，可以使用 &lt;code&gt;apxs&lt;/code&gt; 脚本获取一个或多个模块、把它们编译为共享对象、可选地放置它们并在 Apache 配置文件中启用它们。&lt;/p&gt;                 &lt;p&gt;共享对象 &lt;code&gt;mod_so&lt;/code&gt; 和 &lt;code&gt;apxs&lt;/code&gt; 对所有 Apache 用户都有好处，尤其是对于常常修改配置的用户。对源代码的任何修改都需要重新编译 Apache，而这些工具可以避免这些麻烦。&lt;/p&gt;&lt;p&gt;&lt;font size="4"&gt;&lt;b&gt;&lt;a name="N101E2"&gt;&lt;span class="smalltitle"&gt;APACI 和配置脚本&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;                   &lt;p&gt;可以使用 APache AutoConf-style Interface（APACI）加快配置过程；用户界面是一个称为 configure 的脚本。configure 脚本使用来自命令行的开关。用来创建 makefile 的最常用开关是 &lt;code&gt;-enable-module&lt;/code&gt;、&lt;code&gt;-disable-module&lt;/code&gt;、&lt;code&gt;-enable-shared&lt;/code&gt; 和 &lt;code&gt;-with-layout&lt;/code&gt;。&lt;code&gt;-enable-module&lt;/code&gt; 启用一个在默认情况下没有打开的模块，&lt;code&gt;-disable-module&lt;/code&gt; 的作用正好相反。这两个开关都需要以 &lt;code&gt;-enable[disable]-module=&lt;i&gt;xxxxx&lt;/i&gt;                     &lt;/code&gt; 的形式指定模块（模块名是 mod_&lt;i&gt;xxxxx&lt;/i&gt;）。&lt;/p&gt;                 &lt;p&gt;使用 &lt;code&gt;-with-layout&lt;/code&gt; 指定在编译 Apache 之后放置各个部分的位置。通过使用&lt;i&gt;布局&lt;/i&gt;，可以在编译之前定义所有位置。布局是在 Apache 源代码根目录中的 config.layout 文件中定义的。有几个预定义的布局，但是我总是创建一个定制的布局，使我的所有系统尽可能保持一致。&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;font size="4"&gt;&lt;a name="N10216"&gt;&lt;span class="smalltitle"&gt;一个布局示例&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;                  &lt;p&gt;下面是我在自己的系统上编译 Apache 时最常用的布局。&lt;/p&gt;                 &lt;blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code-outline"&gt; &lt;pre class="displaycode"&gt;prefix: /usr/local/apache&lt;br&gt;exec_prefix: $prefix&lt;br&gt;bindir: $exec_prefix/bin&lt;br&gt;sbindir: $exec_prefix/bin&lt;br&gt;libexecdir: $exec_prefix/libexec&lt;br&gt;mandir: /usr/local/man&lt;br&gt;sysconfdir: /etc&lt;br&gt;datadir: $prefix&lt;br&gt; iconsdir: $datadir/icons&lt;br&gt;htdocsdir: $datadir/html&lt;br&gt;cgidir: $datadir/cgi-bin&lt;br&gt;includedir: /usr/include/apache&lt;br&gt;localstatedir: /var/httpd&lt;br&gt;runtimedir: $localstatedir/rtlogs&lt;br&gt;logfiledir: $localstatedir/logs&lt;br&gt;proxycachedir: $localstatedir/proxy&lt;/pre&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;&lt;p&gt;&lt;b&gt;&lt;font size="4"&gt;&lt;a name="N10222"&gt;&lt;span class="smalltitle"&gt;开始编译过程&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;                 &lt;p&gt;现在可以开始编译自己的 Apache 可执行程序的过程。&lt;/p&gt;                 &lt;p&gt;从 &lt;a href="http://www.apache.org/dist/" target="new"&gt;http://www.apache.org/dist/&lt;/a&gt; 获得最新的 Apache 源代码并下载到 /tmp 中。到撰写本文时，最新版本是 1.3.22。然后，用以下命令进行文件解压：&lt;/p&gt;                 &lt;pre class="displaycode"&gt;# cd /tmp&lt;br&gt;# gunzip -c apache_1.3.22.tar.gz | tar xf -&lt;br&gt;# cd apache_1.3.22/&lt;br&gt;&lt;/pre&gt;&amp;nbsp;&lt;img alt="" src="https://www.ibm.com/i/c.gif" width="10" height="1"&gt;&lt;br&gt;&lt;b&gt;&lt;font size="4"&gt;&lt;a name="N10236"&gt;&lt;span class="smalltitle"&gt;配置和编译&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;/b&gt;                 &lt;p&gt;接下来，输入以下命令开始配置过程。&lt;/p&gt;                 &lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code-outline"&gt;&lt;pre class="displaycode"&gt;# cd /usr/local/src/apache_1.3.22&lt;br&gt;# ./configure -with-layout=JonStandard \&lt;br&gt; -disable-module=imap \&lt;br&gt;-disable-module=asis \&lt;br&gt;-disable-module=userdir \&lt;br&gt;-disable-module=autoindex \ &lt;br&gt;-verbose&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;这些禁用的模块只是为了演示 如何正确使用语法。在这个实例中，禁用了 mod_imap 和 mod_asis（因为没有 imagemaps 或 asis 文件）以及 mod_userdir 和 mod_autoindex（因为没有用户目录和包含索引文件的其他目录）。还添加了 &lt;code&gt;-verbose&lt;/code&gt; 选项，这让 configure 脚本准确地说明其操作。&lt;br&gt;&lt;b&gt;&lt;font size="4"&gt;&lt;br&gt;&lt;/font&gt;&lt;/b&gt;&lt;p&gt;&lt;b&gt;&lt;font size="4"&gt;&lt;a name="N10249"&gt;&lt;span class="smalltitle"&gt;继续编译&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;                  &lt;p&gt;这个过程完成之后，显示命令提示。要完成 Apache 编译，请在命令提示上：&lt;/p&gt;                 &lt;ol&gt;&lt;li&gt;输入 &lt;b&gt;make&lt;/b&gt;。屏幕上会出现消息，说明编译的情况。&lt;/li&gt;&lt;li&gt;完成编译之后，输入 &lt;b&gt;make install&lt;/b&gt; 把文件放到所选布局指定的目录中。&lt;/li&gt;&lt;/ol&gt;                 &lt;p&gt;现在完成了！&lt;/p&gt;&lt;br&gt;&lt;p&gt;&lt;b&gt;&lt;font size="4"&gt;&lt;a name="N10263"&gt;&lt;span class="smalltitle"&gt;完成的二进制文件&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;                 &lt;p&gt;完成的二进制文件如下：&lt;/p&gt;                 &lt;pre class="displaycode"&gt;# /usr/local/apache/bin/httpd -l&lt;br&gt;Compiled-in modules:&lt;br&gt;http_core.c&lt;br&gt;mod_env.c&lt;br&gt;mod_log_config.c&lt;br&gt;mod_mime.c&lt;br&gt;mod_negotiation.c&lt;br&gt;mod_status.c&lt;br&gt;mod_include.c&lt;br&gt;mod_dir.c&lt;br&gt; mod_cgi.c&lt;br&gt;mod_actions.c&lt;br&gt;mod_speling.c&lt;br&gt;mod_alias.c&lt;br&gt;mod_access.c&lt;br&gt;mod_setenvif.c&lt;br&gt;&lt;br&gt;&lt;/pre&gt;&lt;p&gt;&lt;b&gt;&lt;font size="6"&gt;&lt;span class="atitle"&gt;通过配置设置优化 Apache&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;                 &lt;p&gt;到目前为止，已经考虑了操作环境中的性能调优和定制编译的 Apache 守护进程的安装，消除了大多数预编译发行版中多余的部分。现在，要关注 Apache 的运行时选项并通过调整它们进一步改进性能。&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;font size="4"&gt;&lt;a name="N1027B"&gt;&lt;span class="smalltitle"&gt;一般设置&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;                 &lt;p&gt;需要在 Apache 的 httpd.conf 配置文件中设置以下指令：&lt;/p&gt;                 &lt;p&gt;                     &lt;b&gt;HostnameLookups off&lt;/b&gt; ―― 使用域名服务（DNS）的服务总会影响到性能。动态创建的脚本往往只需要 IP 地址，而不是完全规范化的名称。这个指令覆盖默认设置，禁止通过 DNS 进行主机名查询。&lt;/p&gt;                 &lt;p&gt;                     &lt;b&gt;AllowOverride none&lt;/b&gt; ―― 这个指令指示 Apache 不要在它可以访问的每个目录中寻找 .htaccess 文件。如果没有这个指令，Apache 就会浪费处理器时间在提供页面的每个目录中寻找 .htaccess 文件。&lt;/p&gt;                 &lt;p&gt;                     &lt;b&gt;Options FollowSymLinks&lt;/b&gt; 和 &lt;b&gt;Options SymLinksIfOwnerMatch&lt;/b&gt; ―― 这些设置消除多余的系统调用。它们告诉 Apache 是否跟随文件系统中的符号链接以及跟随的条件。尽管文件系统中的符号链接更便于使用，但是会降低 Web 服务的速度。&lt;/p&gt;                 &lt;p&gt;                     &lt;b&gt;SendBufferSize&lt;/b&gt; ―― 如果把这个设置的值增加到最大 Web 页面的大小，就可以降低 Web 服务器的磁盘负担。从内存缓冲区提供页面的速度比物理磁盘快几百倍。&lt;/p&gt;                 &lt;p&gt;                     &lt;b&gt;DirectoryIndex index.cgi index.pl index.shtml index.html&lt;/b&gt; ―― 内容协商（Content negotiation）会降低性能，但是大多数实现都需要它。由于其便利性，内容协商成为一种不可避免的开销。为了降低它对性能的有害影响，这个指令提供选项的完整列表，避免 Apache 浪费时间和资源猜测索引文件。&lt;/p&gt;                 &lt;p&gt;                     &lt;b&gt;MinSpareServers、MaxSpareServers&lt;/b&gt; 和 &lt;b&gt;StartServers&lt;/b&gt; ―― 这些设置控制 Apache 启动多少个子进程来处理 Web 请求。&lt;/p&gt;                 &lt;p&gt;1.3 之前的 Apache 版本使用一种称为 ramp-up period 的机制控制启动多少个子进程来处理负载。ramp-up period 机制每秒启动一个子进程。因为对于高负载来说每秒一个子进程的响应时间太慢了，这在基准测试中会成为问题。但是在实践中，因为 Apache 服务器很少重新启动，所以其功用还有待确定：大多数子进程已经装载了，因此不需要 ramp-up period。&lt;/p&gt;                 &lt;p&gt;Apache 1.3 改变了这个 "每秒一个" 规则，允许子进程以指数形式快速增加。例如，Apache 将生成一个进程，等一秒，然后生成两个进程，再等一秒，然后生成四个进程，依此类推。这个过程一直持续到每秒生成 32 个子进程，或者达到 &lt;b&gt;MinSpareServers&lt;/b&gt; 指定的值。&lt;/p&gt;                 &lt;p&gt;                     &lt;b&gt;MaxRequestsPerChild&lt;/b&gt; 和 &lt;b&gt;KeepAliveTimeout&lt;/b&gt; ―― 这两个设置控制所有子进程的销毁。&lt;/p&gt;                 &lt;ul&gt;&lt;li&gt;MaxRequestsPerChild 设置决定一个子进程最多可以处理多少个请求，超过这个数量之后，Apache 就会生成新的子进程。默认值是 30，但是应该考虑加大这个值：Apache 足够健壮，可以处理更大的负载。如果使用 &lt;code&gt;mod_perl&lt;/code&gt;，就应该重新考虑修改它的默认值，因为这个模块造成子进程占用大量内存页面。&lt;/li&gt;&lt;li&gt;KeepAliveTimeout 设置指定空闲子进程存活的最长时间，超过这个时间之后，就会杀死子进程。不要把这个值增加到 60 以上，因为空闲的子进程会浪费服务器资源。&lt;/li&gt; &lt;/ul&gt;&lt;br&gt;&lt;p&gt;&lt;b&gt;&lt;font size="4"&gt;&lt;a name="N102CC"&gt;&lt;span class="smalltitle"&gt;逗留的连接&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;                 &lt;p&gt;Apache 倾向于逗留刚刚发送数据的连接，但是这样做没有意义。一个小守护进程 &lt;code&gt;lingerd&lt;/code&gt; 有助于纠正这种倾向。&lt;code&gt;lingerd&lt;/code&gt; 通过接管这些逗留连接，让 Apache 能够立即为另一个 HTTP 请求服务。要使用 &lt;code&gt;lingerd&lt;/code&gt;，必须对 Apache 源代码应用补丁。这不适合于新手，但是您应该知道 &lt;code&gt;lingerd&lt;/code&gt; 守护进程可以产生显著的速度提升。&lt;/p&gt; &lt;p&gt;&lt;b&gt;&lt;font size="4"&gt;&lt;a name="N102E4"&gt;&lt;span class="smalltitle"&gt;使用 PHP 的动态内容&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;                 &lt;p&gt;PHP 消耗的资源比较多，需要的处理器时间是静态 HTML 页面的 2 到 10 倍。从性能的角度来看，最好只在站点需要的地方上使用 PHP。&lt;/p&gt;                  &lt;p&gt;为了消除通过 CGI 调用 PHP 的额外开销，要确保把 PHP 静态地安装在 Apache 中或者作为动态调用的模块。另外，应该尝试用 &lt;code&gt;-enable-inline-optimization -disabl debug&lt;/code&gt; 设置编译 PHP4。这会提高 PHP 脚本编译的速度，与缓存产品结合使用可以降低生成动态内容时服务器的响应时间。&lt;/p&gt;                 &lt;p&gt;另外，可以考虑用 &lt;code&gt;-with-mm&lt;/code&gt; 选项编译 PHP 并在 php.ini 中设置 &lt;code&gt;session.save_handler=mm&lt;/code&gt;，从而切换到共享内存会话。这些修改可能使性能提高一倍。&lt;/p&gt;                 &lt;p&gt;要想进一步优化 Apache 安装的 PHP 性能，可以使用某种 PHP 缓存产品。缓存脚本意味着不需要在每次调用时都编译脚本。缓存脚本之后，常常能够获得 50% 的性能提升。另外，也可以缓存 PHP 脚本产生的 HTML 结果，这也可以节省时间。&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;font size="6"&gt;&lt;span class="atitle"&gt;注意事项&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;                  &lt;p&gt;您需要快速优化 Web 服务器和检查表吗？本节提供一些简单的技巧和选项，帮助您快速有效地提高 Apache 安装的性能。&lt;/p&gt;                 &lt;p&gt;                     &lt;b&gt;使用 Apache 的当前版本。&lt;/b&gt;这种 Web 服务器软件的开发当前还在继续。每两周更新一次，甚至更频繁。这些更新常常包含对基本代码的性能改进，或者用来提高 Apache 的灵活性和模块化的新模块。&lt;/p&gt;                 &lt;p&gt;                     &lt;b&gt;避免服务器端包含。&lt;/b&gt;服务器端包含会消耗大量资源，会增加每个服务器请求的计算时间和开销。存在跨多个页面保持站点结构和内容一致的更高效的方法，但是这超出了本教程的范围。考虑买一本 Web 设计方面的书，里面会介绍这方面的内容。&lt;/p&gt;                 &lt;p&gt;                     &lt;b&gt;必须单独启动 &lt;i&gt;httpd&lt;/i&gt;。&lt;/b&gt;要避免在 &lt;code&gt;inetd&lt;/code&gt; 超守护进程或 &lt;code&gt;tcpd&lt;/code&gt; 中启动 Apache 进程。要想在引导系统时启动 Apache，应该在 rc.local 中添加 &lt;code&gt;startup&lt;/code&gt; 命令，或者把启动脚本放在 /etc/rc.d/rc3.d/ 中。&lt;/p&gt;                 &lt;p&gt;                     &lt;b&gt;从另一台机器提供图形。&lt;/b&gt;这样，您的服务器只需处理静态 HTML 和已经创建的动态内容。这个技巧对于包含大量图形的站点尤其有意义，这些站点通过使用图像压缩程序节省带宽和下载时间。&lt;/p&gt;                 &lt;p&gt;                      &lt;b&gt;要在 Apache 安装上进行压力测试。&lt;/b&gt;对 Apache 的压力测试度量改进措施使性能提高了多少。可以使用 &lt;code&gt;ab&lt;/code&gt; 程序（在 Apache 的 bin 或 sbin 目录中）模拟服务器的负载。&lt;/p&gt;                 &lt;p&gt;                     &lt;b&gt;不要在 Web 服务器上运行无关的服务。&lt;/b&gt;为什么要白白消耗处理器和缓存时间呢？应该尽可能让一台机器用于 Web 服务；即使是老式机器也足以应付中低程度的服务负载。Apache 能够充分利用硬件资源，对于老式机器也不例外。&lt;/p&gt;                 &lt;p&gt;                     &lt;b&gt;不要使用网络文件系统（NFS）在网络上保存内容或日志。&lt;/b&gt;应该把所有内容放在运行 Apache 的服务器的本地磁盘驱动器上。不仅 NFS 的网络吞吐量比本地磁盘子系统上的 I/O 操作低，而且 NFS 还需要处理器时间。&lt;/p&gt;                 &lt;p&gt;                     &lt;b&gt;不要为不需要日志的站点保存日志。&lt;/b&gt;这应该是显而易见的，尤其是对于专门提供图形的机器。在 httpd.conf 中，使用 TransferLog 指令把这些不需要的日志发送到 /dev/null 销毁掉。&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;font size="6"&gt;&lt;a name="resources"&gt;&lt;span class="atitle"&gt;参考资料 &lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt; &lt;b&gt;学习&lt;/b&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt; 如果服务器的负载很重，请查阅 Apache Group 的 &lt;a href="http://httpd.apache.org/docs/misc/perf.html"&gt;Hints on Running a High-Performance Web Server&lt;/a&gt;，学习内核调优、硬件和软件交互以及与平台相关的配置。 &lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt; 如果您在 Apache 实现上运行 ASP 页面，请查阅 &lt;code&gt;Apache::ASP&lt;/code&gt; 小组（模块的编写者）撰写的关于 &lt;a href="http://www.apache-asp.org/tuning.html"&gt;调优&lt;/a&gt; 的文章。它声称，只需按照它的指导去做，就可以把性能从每秒 10 个请求提高到每秒 50 个请求。 &lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt; 阅读 O&amp;#39;Reilly Network 所提供的精彩的 &lt;a href="http://linux.oreillynet.com/pub/a/linux/2000/06/29/hdparm.html"&gt;Speeding up Linux Using hdparm&lt;/a&gt;。 &lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt; 阅读以下图书：&lt;a href="http://www.oreilly.com/catalog/webpt2/"&gt;                     &lt;i&gt;Web Performance Tuning, Second Edition&lt;/i&gt;                 &lt;/a&gt;（O&amp;#39;Reilly and Associates，作者 Patrick Killelea）和 &lt;a href="http://www.oreilly.com/catalog/apache3/"&gt;                     &lt;i&gt;Apache: The Definitive Guide, Third Edition&lt;/i&gt;                 &lt;/a&gt;（O&amp;#39;Reilly and Associates，作者 Ben Laurie 和 Peter Laurie）。&lt;br&gt;             &lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;b&gt;获得产品和技术&lt;/b&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt; 从 Apache Web 网站上的 Apache group 下载 &lt;a href="http://www.apache.org/docs/mod/index.html"&gt;官方认可的模块&lt;/a&gt;。 &lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt; Apache Module Registry 是一个模块数据库，包含标准 Apache 发行版之外的许多模块，可以在您的 Apache 安装中使用。浏览 &lt;a href="http://modules.apache.org/"&gt;modules.apache.org&lt;/a&gt;，寻找扩展 Web 服务器功能的机会。 &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;font size="6"&gt;&lt;a name="author"&gt;&lt;span class="atitle"&gt;&lt;br&gt;关于作者&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;/b&gt;&lt;p&gt;Jonathan Hassell 拥有并管理 Enable Hosting，这是一家位于北卡罗莱纳州 Charlotte 的 Web 服务提供商。他还定期为计算机行业出版物撰稿。Jonathan 还从事电视剧本写作。可以通过 &lt;a href="mailto:jon@jonathanhassell.com"&gt;jon@jonathanhassell.com&lt;/a&gt; 与他联系。             &lt;/p&gt;&lt;br&gt;&lt;/div&gt; &lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-4771734196627582135?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/4771734196627582135/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=4771734196627582135' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/4771734196627582135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/4771734196627582135'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/09/apache.html' title='通过定制 Apache 获得最佳性能'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-2562431031123240051</id><published>2008-09-18T18:48:00.003+08:00</published><updated>2008-09-18T18:53:17.985+08:00</updated><title type='text'>问题奶粉，不仅仅是奶粉的问题</title><content type='html'>&lt;p  style="text-indent: 2em;font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt; 近来“三鹿”奶粉事件成了大家关注的焦点，今天一批官员倒在了这一事件中。这一事件折射出来的问题很多，值得有关部门进行深刻反思。&lt;/span&gt;&lt;/p&gt; &lt;p  style="text-indent: 2em;font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt; 一是政府监管的缺失。现在全国都在开展“质量兴省”的活动，石家庄市应该不例外。如果真的在开展质量兴省（市），那政府应该担负起协调相关部门共同监管产品质量的重任。质监、工商、卫生等部门，如果没有合力，那只能说，政府行为就会有缺失，&lt;a name="qihoosnap0"&gt;&lt;/a&gt;&lt;span style="color: black; background-color: rgb(255, 255, 102);"&gt;问题奶粉&lt;/span&gt;的出现，就是这一现象的反应。&lt;/span&gt;&lt;/p&gt; &lt;p  style="text-indent: 2em;font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt; 二是部门职能的缺失。质检部门的职能是通过技术手段为消费者提供产品合格与否的信息。据我所知，各级质检部门都有产品的定期抽样检测，监督检测，特别是对关系人民生命财产安全的食&lt;span style="color: rgb(0, 0, 0);"&gt;品，更应该义不容辞的责任！三鹿出了问题，质检部门才检测出全国有那么多的含有三氰氰胺的&lt;span style="color: black; background-color: rgb(255, 255, 102);"&gt;问题奶粉&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;。&lt;/span&gt; 平时的定期检测和监督检测到哪儿去了？常规监管在哪里？能起到什么作用。&lt;/span&gt;&lt;/p&gt; &lt;p  style="text-indent: 2em;font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt; 三 是国家免检的可信度到底有多大？大凡国家免检产品，各地质检部门是不能平时再进行抽样检测的。要是各地质检部门再进行抽样出现不合格，那无疑等于给质检总 局的脸上抹黑了，所以才有了这样一条凡国家免检，地方质监部门不得抽样的规定。这样在很大程度上，对企业产品质量的监管，就要靠自律了。&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt; &lt;/strong&gt;&lt;p  style="text-indent: 2em;font-family:arial;"&gt;&lt;span style="color: rgb(0, 0, 204);font-size:100%;" &gt;&lt;strong&gt; 免检是怎么样规定的？产品质量长期稳定，企业有完善的质量保证体系，市场占有率高，经济效益在本行业内排名前列，产品标准达到或严于国家标准要求，产品经省级以上质量技术监督部门连续3次以上监督检查均为合格，产品符合国家有关法律法规和国家产业政策。&lt;br /&gt;产品免检条件&lt;br /&gt;(一)产品质量长期稳定，企业有完善的质量保证体系；&lt;br /&gt;(二)产品市场占有率、经济效益在本行业内排名前列；&lt;br /&gt;(三)产品标准达到或者严于国家标准、行业标准要求；&lt;br /&gt;(四)产品经省级以上质量技术监督部门连续三次以上(含三次)监督检查均为合格；&lt;br /&gt;(五)产品符合国家有关法律法规和国家产业政策。&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt; &lt;/strong&gt;&lt;p  style="text-indent: 2em;font-family:arial;"&gt;&lt;span style="color: rgb(0, 0, 204);font-size:100%;" &gt;&lt;strong&gt;&lt;strong&gt;我想这些条件并不苛刻，问题在于，一个企业要想达到国家免检，定会花不少的精力和投资才行。当然具体的，那些当事人最清楚。&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;p  style="text-indent: 2em;font-family:arial;"&gt;&lt;span style="color: rgb(0, 0, 0);font-size:100%;" &gt;&lt;strong&gt;&lt;strong&gt;&lt;u&gt;&lt;strong&gt; 刚才看到&lt;/strong&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;&lt;strong&gt;&lt;a href="http://news.sina.com.cn/c/2008-09-17/102116304902.shtml" target="_blank"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;质检总局有了一条新规定：检出三聚氰胺企业免检资格一律撤销&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;这本身是此地无银三百两之嫌，如果免检资格经得起时间考验，为何单凭检出三聚氰胺就要取消这些企业的免检资格呢？如果更多的产品检出不合格成份呢？是不是又得出台一个检出某某成份的产品取消免检资格呢？这是一种治标不治本的方法！&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-2562431031123240051?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/2562431031123240051/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=2562431031123240051' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/2562431031123240051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/2562431031123240051'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/09/blog-post_5646.html' title='问题奶粉，不仅仅是奶粉的问题'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-5547656313730282921</id><published>2008-09-18T18:46:00.001+08:00</published><updated>2008-09-18T18:46:06.047+08:00</updated><title type='text'>问题奶粉</title><content type='html'>&lt;div dir="ltr"&gt;&lt;div id="conWrapper"&gt;  &lt;font size="4"&gt;&lt;font color="#f70909" face="楷体_GB2312"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 随着三鹿奶粉事件的骤然升级，三聚氰胺这个冷名词也一下子"火爆"起来。要想了解&lt;a name="qihoosnap0"&gt;&lt;/a&gt;&lt;b style="color: black; background-color: rgb(255, 255, 102);"&gt;问题奶粉&lt;/b&gt;，就要先认识三聚氰胺。那么，三聚氰胺到底是个什么东西？怎样才能让&lt;b style="color: black; background-color: rgb(255, 255, 102);"&gt;问题奶粉&lt;/b&gt;不再成为问题？&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt; &lt;div&gt; &amp;nbsp;&lt;/div&gt; &lt;div&gt;&lt;font size="4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font face="黑体"&gt;三聚氰胺的基本常识：&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/div&gt; &lt;div&gt;&lt;font size="4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 三聚氰胺是一种重要的有机化工中间产品，主要用来制作三聚氰胺树脂，具有优良的耐水性、耐热性、耐电弧性、优良阻燃性。用途：可用于装饰板的制作，用于氨基塑料、粘合剂、涂料、币纸增强剂、纺织助剂等。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/div&gt;  &lt;div&gt;&lt;font size="4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt; &lt;font size="4"&gt;三聚氰胺呈弱碱性（pKa=8），可与多种酸反应生成三聚氰胺盐。遇强酸或强碱水溶液水解，胺基逐步被羟基取代，先生成三聚氰酸二酰胺，进一步水解生成三聚氰酸一酰胺，最后生成三聚氰酸。 &amp;nbsp; 　　&lt;/font&gt;&lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;&lt;font size="4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font face="黑体"&gt;三聚氰胺的主要用途有：&lt;/font&gt; &amp;nbsp; 　　&lt;/font&gt;&lt;/div&gt;  &lt;div&gt;&lt;font size="4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1）装饰面板：可制成防火、抗震、耐热的层压板，色泽鲜艳、坚固耐热的装饰板，作飞机、船舶和家具的贴面板及防火、抗震、耐热的房屋装饰材料。　　&lt;/font&gt;&lt;/div&gt; &lt;div&gt;&lt;font size="4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2）涂料：用丁醇、甲醇醚化后，作为高级热固性涂料、固体粉末涂料的胶联剂、可制作金属涂料和车辆、电器用高档氨基树脂装饰漆。　　&lt;/font&gt;&lt;/div&gt; &lt;div&gt;&lt;font size="4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3）模塑粉：经混炼、造粒等工序可制成蜜胺塑料，无度、抗污，潮湿时仍能保持良好的电气性能，可制成洁白、耐摔打的日用器皿、卫生洁具和仿瓷餐具，电器设备等高级绝缘材料。　　&lt;/font&gt;&lt;/div&gt;  &lt;div&gt;&lt;font size="4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4）纸张：用乙醚醚化后可用作纸张处理剂，生产抗皱、抗缩、不腐烂的钞票和军用地图等高级纸。　　&lt;/font&gt;&lt;/div&gt; &lt;div&gt;&lt;font size="4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5）三聚氰胺－甲醛树酯与其他原料混配，还可以生产出织物整理剂、皮革鞣润剂、上光剂和抗水剂、橡胶粘合剂、助燃剂、高效水泥减水剂、钢材淡化剂等。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;&lt;font size="4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font face="黑体"&gt;三鹿奶粉中为什么会有三聚氰胺？&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/div&gt;  &lt;div&gt;&lt;font size="4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 食品工业中常常需要检查蛋白质含量，但是直接测量蛋白质含量技术上比较复杂，成本也比较高，不适合大范围推广，所以业界常常使用一种叫做"凯氏定氮法 （Kjeldahl method）"的方法，通过食品中氮原子的含量来间接推算蛋白质的含量。也就是说，食品中氮原子含量越高，这蛋白质含量就越高。这样一来，这名不见经传 的三聚氰胺的由于其分子中含氮原子比较多，于是就派上大用场了。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/div&gt; &lt;div&gt;&lt;font size="4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 三聚氰胺的最大的特点是含氮量很高（66％），加之其生产工艺简单、成本很低，给了掺假、造假者极大地利益驱动，有人估算在植物蛋白粉和饲料中使蛋白质增 加一个百分点，用三聚氰胺的花费只有真实蛋白原料的1/5。所以"增加"产品的表观蛋白质含量是添加三聚氰胺的主要原因，三聚氰胺作为一种白色结晶粉末， 没有什么气味和味道，掺杂后不易被发现等也成了掺假、造假者心存侥幸的辅助原因。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/div&gt; &lt;div&gt;&lt;font size="4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1994年国际化学品安全规划署和欧洲联盟委员会合编的《国际化学品安全手册》第三卷和国际化学品安全卡片也只说明：长期或反复大量摄入三聚氰胺可能对肾与膀胱产生影响，导致产生结石。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/div&gt; &lt;div&gt;&lt;font size="4"&gt;&amp;nbsp;&amp;nbsp; 三聚氰胺最早被中国的造假者用在家畜饲料生产中，饲料中添加了这玩意，仪器一检测，氮原子很多啊，一推算，蛋白质含量也很高，生产者顺理成章地就省下昂贵 的蛋白粉开支了。三聚氰胺虽然有毒，但是牛羊体积都比较大，肾功能强，能顺利代谢毒素，吃了，好像也没啥死牛死羊的事情发生，于是也没人去关注。顺理成 章，造假者扩大应用范围，顺便把三聚氰胺用于出口美国的宠物饲料中，当然不幸的是，猫狗等宠物体积比牛羊小多了，代谢能力差，这三聚氰胺的毒性的影响也就 大了，结果毒死了猫狗，惊动了美国政府，最后三聚氰胺这种东西也进入美国的FDA的视线。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/div&gt; &lt;div&gt;&lt;font size="4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/div&gt; &lt;div&gt;&lt;font size="4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font face="黑体"&gt;三鹿奶粉事件留给我们的反思：&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/div&gt; &lt;div&gt;&lt;font size="4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 三鹿奶粉事件给我们敲响了食品安全的警钟，面对&lt;b style="color: black; background-color: rgb(255, 255, 102);"&gt;问题奶粉&lt;/b&gt;，奶粉生产企业和销售企业应当承担什么样的法律责任和社会责任？质监部门和卫生部门应当怎样启动应急预案，加强对&lt;b style="color: black; background-color: rgb(255, 255, 102);"&gt;问题奶粉&lt;/b&gt;的检查、监管与处罚力度？对于受到&lt;b style="color: black; background-color: rgb(255, 255, 102);"&gt;问题奶粉&lt;/b&gt;侵害的婴幼儿应当得到什么样的诊疗和赔偿？其他食品生产企业应该怎样加强食品生产的检查、检测和监督？......&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/div&gt;  &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;&lt;font size="4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b style="color: black; background-color: rgb(255, 255, 102);"&gt;问题奶粉&lt;/b&gt;不仅暴露了食品生产企业过分注重经济利益和眼前利益而忽略婴幼儿健康的法律问题和社会问题，是缺乏法律意识和社会责任的反映；&lt;b style="color: black; background-color: rgb(255, 255, 102);"&gt;问题奶粉&lt;/b&gt;也再次暴露了质检部门和卫生部门的监管问题，让我们忧心忡忡，质检部门和卫生部门能否联起手来，向&lt;b style="color: black; background-color: rgb(255, 255, 102);"&gt;问题奶粉&lt;/b&gt;开战，向食品生产企业开战？新闻媒体能否及时、客观地报道食品生产企业，既保护我们的民族品牌，又能对&lt;b style="color: black; background-color: rgb(255, 255, 102);"&gt;问题奶粉&lt;/b&gt;进行曝光、批判？社会公众面对公众卫生突发事件能否保持冷静、理性，并获得应有的知情权和话语权？受害者能否得到及时、合理的诊疗与赔偿，并得到应有的同情与尊重？......&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/div&gt;  &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;&lt;font size="4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 真希望&lt;b style="color: black; background-color: rgb(255, 255, 102);"&gt;问题奶粉&lt;/b&gt;不再成为问题，真希望三聚氰胺远离婴幼儿奶粉，真希望食品生产再严格一点，再认真一点，毕竟人命关天，毕竟关乎中华民族的健康一未来！！&lt;/font&gt;&lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;&lt;font size="4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; （一家之言，仅供参考；未经许可，不得转载。）&lt;/font&gt;&lt;/div&gt;  &lt;div&gt;&lt;font size="4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; （作者：刘辉，北京市法立律师事务所律师，北京市律师协会刑法专业委员会委员，&lt;/font&gt;&lt;a style="text-decoration: underline;" href="http://www.youthlawyer.com.cn/" target="_blank"&gt;&lt;font color="#f70909" size="4"&gt;&lt;strong&gt;中国青年律师网&lt;/strong&gt;&lt;/font&gt;&lt;/a&gt;&lt;font size="4"&gt;首席律师。）&lt;/font&gt;&lt;/div&gt;  &lt;/div&gt; &lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-5547656313730282921?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/5547656313730282921/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=5547656313730282921' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/5547656313730282921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/5547656313730282921'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/09/blog-post_18.html' title='问题奶粉'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-6125456014090941232</id><published>2008-09-17T14:03:00.000+08:00</published><updated>2008-09-17T14:04:20.409+08:00</updated><title type='text'>国庆放假</title><content type='html'>　  &lt;span style="font-weight: bold;"&gt;一、元旦&lt;/span&gt;：2007年12月30日—2008年1月1日放假，共3天。其中，1月1日（星期二）为法定节假日，12月30日（星期日）为公休日，12月29日（星期六）公休日调至12月31日（星期一），12月29日（星期六）上班。&lt;br /&gt;&lt;br /&gt;   &lt;span style="font-weight: bold;"&gt;二、春节&lt;/span&gt;：2月6日—12日（农历除夕至正月初六）放假，共7天。其中，2月6日（除夕）、2月7日（春节）、2月8日（正月初二）为法定节假日，2月9日（星期六）、2月10日（星期日）照常公休，2月2日（星期六）、 2月3日（星期日）两个公休日调至2月11日（星期一）、2月12日（星期二），2月2日（星期六）、2月3日（星期日）上班。&lt;br /&gt;&lt;br /&gt;　　&lt;span style="font-weight: bold;"&gt;三、清明节&lt;/span&gt;：4月4日—6日放假，共3天。其中，4月4日（清明节）为法定节假日，4月5日（星期六）、4月6日（星期日）照常公休。&lt;br /&gt;&lt;br /&gt;　　&lt;span style="font-weight: bold;"&gt;四、“五一”国际劳动节&lt;/span&gt;：5月1日—3日放假，共3天。其中，5月1日为法定节假日，5月3日（星期六）为公休日，5月4日（星期日）公休日调至5月2日（星期五），5月4日（星期日）上班。&lt;br /&gt;&lt;br /&gt;   &lt;span style="font-weight: bold;"&gt;五、端午节&lt;/span&gt;：6月7日—9日放假，共3天。其中，6月7日（星期六）照常公休，6月8日（农历五月初五，端午节）为法定节假日，6月8日（星期日）公休日调至6月9日（星期一）。&lt;br /&gt;&lt;br /&gt;   &lt;span style="font-weight: bold;"&gt;六、中秋节&lt;/span&gt;：9月13日—15日放假，共3天。其中，9月13日（星期六）为公休日，9月14日（农历八月十五，中秋节）为法定节假日，9月14日（星期日）公休日调至9月15日（星期一）。&lt;br /&gt;&lt;br /&gt;   &lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;七、国庆节&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;：9月29日—10月5日放假，共7天。其中，10月1日、2日、3日为法定节假日，9月27日（星期六）、9月28日（星期日）两个公休日调至9月29日（星期一）、30日（星期二），10月4日（星期六）、5日（星期日）照常公休。 &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-6125456014090941232?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/6125456014090941232/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=6125456014090941232' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/6125456014090941232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/6125456014090941232'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/09/blog-post.html' title='国庆放假'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-1629201674875124600</id><published>2008-09-08T09:54:00.001+08:00</published><updated>2008-09-08T09:56:34.981+08:00</updated><title type='text'>Smarty循环</title><content type='html'>这种用法比较特殊，我也遇到类似的问题。记录在这里。原文地址 : &lt;a href="http://xieyu.blog.51cto.com/213338/62551"&gt;简单而复杂的smarty循环问题&lt;/a&gt;&lt;br /&gt;问:&lt;br /&gt;$mySmarty-&gt;assign('sCount', 20); &lt;br /&gt;$mySmarty-&gt;display('xxx.tpl'); &lt;br /&gt;&lt;br /&gt;我想要的很简单，就是能在xxx.tpl中循环$sCount变量，就像类似于下面的PHP循环形式： &lt;br /&gt;&lt;br /&gt;for ($i = 0; $i &lt; $sCount; $i++) &lt;br /&gt;{ &lt;br /&gt;...... &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;每个语言都有循环语句，smarty（暂且勉强归类到语言中）也不例外，但是查了手册上的资料，竟然全部都是关于数组循环的语句，难道我要想循环一个100次的语句，就要成立一个数组，赋值100次？循环1000次，5000次呢？难道就没有最简单、最原始的办法了？ &lt;br /&gt;&lt;br /&gt;-----------------------------&lt;br /&gt;答:&lt;br /&gt;用一段section模拟 &lt;br /&gt;{section name=loop loop=$count} &lt;br /&gt;id: {$smarty.section.loop.index} &lt;br /&gt;{/section} &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;给count赋个值 &lt;br /&gt;$smarty-&gt;assign('count', 5);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-1629201674875124600?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/1629201674875124600/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=1629201674875124600' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/1629201674875124600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/1629201674875124600'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/09/smarty.html' title='Smarty循环'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-6107680758001743030</id><published>2008-08-28T11:05:00.001+08:00</published><updated>2008-08-28T11:05:53.069+08:00</updated><title type='text'>javascript eval()</title><content type='html'>&lt;div dir="ltr"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;eval()&lt;/span&gt;是Javascript中最容易被滥用的函数。&lt;br&gt;&lt;br&gt;避免使用&lt;span style="color: rgb(255, 0, 0);"&gt;eval()&lt;/span&gt;&lt;br&gt;&lt;br&gt;避免使用Function 的构造函数: new Function()&lt;br&gt;&lt;br&gt;避免传递字符串给&lt;code&gt;setTimeout&lt;/code&gt;&amp;nbsp; 或&lt;code&gt; setInterval&lt;/code&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt; &lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-6107680758001743030?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/6107680758001743030/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=6107680758001743030' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/6107680758001743030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/6107680758001743030'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/08/javascript-eval.html' title='javascript eval()'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-3159836311937706496</id><published>2008-08-23T11:42:00.001+08:00</published><updated>2008-08-23T11:42:15.185+08:00</updated><title type='text'>Javascript中的NaN</title><content type='html'>&lt;div dir="ltr"&gt;在Javascript中，如果传递给parseInt()和parseFloat()的是一个不包含数字或空的字符串，将返回NaN。 &lt;br&gt;&lt;br&gt;parseInt(&amp;#39;&amp;#39;) == NaN 和 parseInt(&amp;#39;&amp;#39;) == 'NaN' 都得不到我们想要的结果。 NaN 不等于任何值。包括 NaN == NaN。&lt;br&gt;&lt;br&gt;prototype.js 提供了一个isNumber ()方法，用于探测一个值是否为数值，Object.isNumber(NaN)返回的是true，因为无穷大也是一个数。&lt;br&gt; &lt;br&gt;Javascript 有个函数isNaN(); 只要他才能帮我们把有穷数和这个无穷大区分开。&lt;br&gt;&lt;br&gt;isNaN(NaN) 返回true，其他任何参数都返回false. &lt;br&gt;&lt;br&gt;&lt;br&gt; &lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-3159836311937706496?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/3159836311937706496/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=3159836311937706496' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/3159836311937706496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/3159836311937706496'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/08/javascriptnan.html' title='Javascript中的NaN'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-1495367366276915198</id><published>2008-08-19T17:02:00.001+08:00</published><updated>2008-08-19T17:02:07.947+08:00</updated><title type='text'>40+ Tooltips Scripts With AJAX, JavaScript &amp; CSS</title><content type='html'>&lt;div dir="ltr"&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.1976design.com/blog/archive/2003/11/21/nice-titles/"&gt;Nice Titles Revised&lt;/a&gt;      &lt;br&gt;     An improved Nice Titles Tooltip Script with Accesskeys support.      &lt;br&gt;     &lt;div&gt;&lt;img title="Tooltips Scripts - Nice Titles revised | Blog | 1976design.com" alt="Tooltips Scripts - Nice Titles revised | Blog | 1976design.com" src="http://hiphotos.baidu.com/freezesoul/pic/item/80e48126741b97188b82a121.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;      &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://blog.innerewut.de/articles/2006/10/19/a-prototype-based-%20-tooltip"&gt;A lightweight prototype based JavaScript tooltip&lt;/a&gt;      &lt;br&gt;     &lt;div&gt;&lt;img title="Tooltips Scripts - A lightweight prototype based JavaScript tooltip" alt="Tooltips Scripts - A lightweight prototype based JavaScript tooltip" src="http://hiphotos.baidu.com/freezesoul/pic/item/dc7dea246f71200e4d088d22.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;      &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.kryogenix.org/code/browser/nicetitle/"&gt;Nice Titles&lt;/a&gt;      &lt;br&gt;     A classic. The script uses a background image.      &lt;br&gt;     &lt;div&gt;&lt;img title="Tooltips Scripts - Nice titles" alt="Tooltips Scripts - Nice titles" src="http://hiphotos.baidu.com/freezesoul/pic/item/17672b343a9c89345bb5f500.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;     &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.beauscott.com/2006/08/19/ajax-enabled-help-balloons/"&gt;AJAX-enabled Help-Balloons&lt;/a&gt;Help windows in baloon-design. AJAXified version is also available.      &lt;br&gt;     &lt;div&gt;&lt;img title="Tooltips Scripts - BeauScott Blog Archive AJAX-enabled Help-Balloons" alt="Tooltips Scripts - BeauScott AJAX-enabled Help-Balloons" src="http://hiphotos.baidu.com/freezesoul/pic/item/62c684d6f778142007088b01.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;      &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://codylindley.com/%20/264/jtip-a-jquery-tool-tip"&gt;jTip – A jQuery Tool Tip&lt;/a&gt;      &lt;br&gt;     Extensive AJAX-based tooltips with numerous functions and presentation possibilities.      &lt;br&gt;     &lt;div&gt;&lt;img alt="Screenshot Tooltipp" src="http://hiphotos.baidu.com/freezesoul/pic/item/b8c49d51afbb852b42a75b01.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;     &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://bassistance.de/jquery-plugins/jquery-plugin-tooltip/"&gt;jQuery plugin: Tooltip&lt;/a&gt;      &lt;br&gt;     Enhances the jQuery Library.      &lt;br&gt;     &lt;div&gt;&lt;img alt="Screenshot Tooltipp" src="http://hiphotos.baidu.com/freezesoul/pic/item/6c8e7a31be5c3916ebc4af03.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;     &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://solardreamstudios.com/learn/css/qtip"&gt;qTip&lt;/a&gt;      &lt;br&gt;     Works for all elements, not only for links in most browsers - IE 5.5+, Firefox, Safari and Opera.      &lt;br&gt;     &lt;div&gt;&lt;img title="Tooltips Scripts - qTip › CSS › Learn › solarDreamStudios" alt="Tooltips Scripts - qTip › CSS › Learn › solarDreamStudios" src="http://hiphotos.baidu.com/freezesoul/pic/item/d901520fd00b5e256159f32b.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;      &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.askthecssguy.com/2007/03/form_field_hints_with_css_and.html"&gt;Form field hints with CSS Tooltips&lt;/a&gt;      &lt;br&gt; t's a basic example of how helpful a little JavaScript and CSS can be in a form. Instead of the input hints always showing and potentionally cluttering a very simple form, only the hint for the currently focused input will show. This article will show a way to do this. &lt;br&gt;     &lt;div&gt;&lt;img title="Tooltips Scripts - Form field hints with CSS and JavaScript (Ask the CSS Guy)" alt="Tooltips Scripts - Form field hints with CSS and JavaScript (Ask the CSS Guy)" src="http://hiphotos.baidu.com/freezesoul/pic/item/70939f82b34846b06c811909.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;      &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://codylindley.com/%20/219/finding-a-%20-tool-tip-script"&gt;JS Tooltip&lt;/a&gt;      &lt;br&gt; Displays customizable tool tip message for each link element on a web page. A tool tip that can be added to the anchor element unobtrusively by adding a class value to it. This was done by having the tool tip message pull from the specific title attribute of the anchor element that the tool tip was added too. &lt;br&gt;     &lt;div&gt;&lt;img title="Tooltips Scripts - Javascript Entry - Cody Lindley: Finding a Javascript Tool Tip Script" alt="Tooltips Scripts - Javascript Entry - Cody Lindley: Finding a Javascript Tool Tip Script" src="http://hiphotos.baidu.com/freezesoul/pic/item/0a7073cf41d61532f8dc610a.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;      &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://boxover.swazz.org/"&gt;BoxOver&lt;/a&gt;      &lt;br&gt;     Flexible DHTML-Tooltipp in numerous formats. Appears (almost) immedately and fades in during loading.      &lt;br&gt;     &lt;div&gt;&lt;img alt="Screenshot Tooltipp" src="http://hiphotos.baidu.com/freezesoul/pic/item/6209ae3470773bb8d1a2d336.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.twinhelix.com/dhtml/supernote/"&gt;SuperNotes&lt;/a&gt;      &lt;br&gt;     Converts footnotes to tooltips. Appears immediately and can be assigned with a fixed position in the browser window.      &lt;br&gt;     &lt;div&gt;&lt;img alt="Screenshot Tooltipp" src="http://hiphotos.baidu.com/freezesoul/pic/item/19f949ede46001dbb31cb115.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.twinhelix.com/dhtml/tipster/demo/"&gt;Tipster&lt;/a&gt;      &lt;br&gt;     Multifunctional tool tips with JavaScript.      &lt;br&gt;     &lt;div&gt;&lt;img title="Tooltips Scripts - Tipster Demonstration" alt="Tooltips Scripts - Tipster Demonstration" src="http://hiphotos.baidu.com/freezesoul/pic/item/9acfb1b7fab786fb31add116.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;      &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.dhtmlgoodies.com/index.html?page=tooltip"&gt;5 Tooltips by DHTMLGoodies&lt;/a&gt;      &lt;br&gt;     First version is suppose to improve the usability of online forms:      &lt;br&gt;     &lt;div&gt;&lt;img alt="Screenshot Tooltipp" src="http://hiphotos.baidu.com/freezesoul/pic/item/f9be3987f0a9bc25c75cc332.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li&gt;The second technique uses AJAX.     &lt;br&gt;     &lt;div&gt;&lt;img alt="Screenshot Tooltipp" src="http://hiphotos.baidu.com/freezesoul/pic/item/d292aaec6feaea2863d09f33.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.walterzorn.com/tooltip/tooltip_e.htm"&gt;Walter Zorns JavaScript, DHTML Tooltipps&lt;/a&gt;      &lt;br&gt; These tooltips can be used for different purposes; the code is well-documented and can easily be improved and modified. &lt;br&gt;     &lt;div&gt;&lt;img alt="Screenshot Tooltipp" src="http://hiphotos.baidu.com/freezesoul/pic/item/fa4c223f8016f1e354e72311.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li&gt;&lt;a href="http://examples.learningjquery.com/62/#examplesection"&gt;clueTip&lt;/a&gt;      &lt;br&gt; This is a demo page for the new clueTip — a jQuery-based, AJAX-powered tooltip. The clueTip plug-in was inspired by Cody Lindley's jTip script. &lt;br&gt;     &lt;div&gt;&lt;img title="Tooltips Scripts - clueTip : A jQuery Plugin" alt="Tooltips Scripts - clueTip : A jQuery Plugin" src="http://hiphotos.baidu.com/freezesoul/pic/item/715c90139067408f6538db12.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;      &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.chrisesler.com/mootools/mootools-tooltip.html"&gt;Mootools Tooltip&lt;/a&gt;      &lt;br&gt;     Mootools Javascript example of using tooltips.      &lt;br&gt;     &lt;div&gt;&lt;img title="Tooltips Scripts - Mootools Javascript Tooltips" alt="Tooltips Scripts - Mootools Javascript Tooltips" src="http://hiphotos.baidu.com/freezesoul/pic/item/051113384f5971fdb211c713.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;      &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.dustindiaz.com/sweet-titles/"&gt;Sweet Titles&lt;/a&gt;      &lt;br&gt;     JavaScript Fading Tooltips.&lt;a href="http://www.dustindiaz.com/sweet-titles/"&gt;       &lt;br&gt;     &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dyn-web.com/dhtml/tooltips/hover-tip.html"&gt;Hover Tip&lt;/a&gt;      &lt;br&gt; Tooltip with menu-like capabilities. The tooltip layer will remain visible while the viewer hovers over it. This allows you to place clickable links inside tooltip content. &lt;br&gt;     &lt;div&gt;&lt;img title="Tooltips Scripts - Hover-Tip: Tooltip You Can Mouse Over" alt="Tooltips Scripts - Hover-Tip: Tooltip You Can Mouse Over" src="http://hiphotos.baidu.com/freezesoul/pic/item/4efcc813134f832cdd54011c.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;      &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.texsoft.it/index.php?%20m=sw.js.htmltooltip&amp;amp;c=software&amp;amp;l=it"&gt;Multiline Tooltip with HTML, CSS and JavaScript&lt;/a&gt;      &lt;br&gt; This document explains how to make nice multiline tooltip for HTML documents, using simple and standard CSS, HTML and JavaScript. &lt;br&gt;     &lt;div&gt;&lt;img title="Tooltips Scripts - texSoft.it - multiline tooltip with HTML CSS and JavaScript" alt="Tooltips Scripts - texSoft.it - multiline tooltip with HTML CSS and JavaScript" src="http://hiphotos.baidu.com/freezesoul/pic/item/60817fd9b90c8be639012f1d.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;      &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.bosrup.com/web/overlib/"&gt;overLIB&lt;/a&gt;      &lt;br&gt;     This JavaScript-library can be used in a variety of ways; many positioning and appearance features are available.      &lt;br&gt;     &lt;div&gt;&lt;img alt="Screenshot Tooltipp" src="http://hiphotos.baidu.com/freezesoul/pic/item/70939f82b34546b06c81191e.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;     &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.illustate.com/playground/scriptaculous/tooltip/"&gt;Scriptaculous Effect.Tooltip&lt;/a&gt;      &lt;br&gt;     The tooltip script from the &lt;a href="http://script.aculo.us/"&gt;script.aculo.us&lt;/a&gt; library.      &lt;br&gt;     &lt;div&gt;&lt;img title="Tooltips Scripts - Effect.Tooltip" alt="Tooltips Scripts - Effect.Tooltip" src="http://hiphotos.baidu.com/freezesoul/pic/item/88b6f8ed057a894078f0551f.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;     &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://tooltip.crtx.org/"&gt;Tooltip.js&lt;/a&gt;      &lt;br&gt;     Tooltipps with AJAX. The library uses the Prototype JavaScript Framework. The demo doesn't work any longer.      &lt;br&gt;     &lt;div&gt;&lt;img title="Tooltips Scripts - Tooltip.js - About" alt="Tooltips Scripts - Tooltip.js - About" src="http://hiphotos.baidu.com/freezesoul/pic/item/0ff26f81e50893d7bc3e1e3b.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;     &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;h4&gt;&lt;strong&gt;CSS-Based Solutions&lt;/strong&gt;&lt;/h4&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://loadaveragezero.com/vnav/labs/CSS/tooltips.php"&gt;CSS Tooltips&lt;/a&gt;      &lt;br&gt;     A simple demonstration of using custom CSS tooltips as a drop-in replacement for the browser-based title attribute.      &lt;br&gt;     &lt;div&gt;&lt;img title="Tooltips Scripts - Custom CSS Tooltips - loadaverageZero" alt="Tooltips Scripts - Custom CSS Tooltips - loadaverageZero" src="http://hiphotos.baidu.com/freezesoul/pic/item/fa5fb01b747172168618bf1a.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;      &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.communitymx.com/content/article.cfm?page=4&amp;amp;cid=4E2C0"&gt;CSS Technique for Tooltips&lt;/a&gt;      &lt;br&gt; CSS can create "faux tooltips" much the same as the JavaScript ones, but without all the (possibly) undesirable scripting. There are a few in's and out's involved, but surprisingly, the methods are rather easy to accomplish. &lt;br&gt;     &lt;div&gt;&lt;img title="Tooltips Scripts - CSS Tooltips - Part One" alt="Tooltips Scripts - CSS Tooltips - Part One" src="http://hiphotos.baidu.com/freezesoul/pic/item/e4329d2fd529a2371f30891b.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;      &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://css.experiments.severnsolutions.co.uk/dhtml/tooltips/"&gt;Unobtrusive and Slightly Accessible CSS Tool Tips on Semi Transparent CSS Menus&lt;/a&gt;      &lt;br&gt;     The scripts creates half-transparent tooltips with shadows.      &lt;br&gt;     &lt;div&gt;&lt;img title="Tooltips Scripts - Unobtrusive and Slightly Accessible CSS Tool Tips on Semi Transparent CSS Menus" alt="Tooltips Scripts - Unobtrusive and Slightly Accessible CSS Tool Tips on Semi Transparent CSS Menus" src="http://hiphotos.baidu.com/freezesoul/pic/item/731cfb19403abc75dab4bde4.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;      &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://mikecherim.com/experiments/css_menu_descriptions.php"&gt;CSS Menu Descriptions&lt;/a&gt;      &lt;br&gt; This is a CSS technique that could be useful if you want to give users accessible added content such as tool-tips, notifications, or alerts, without adding unnecessary clutter to your page. And since it doesn't rely of JavaScript, it should be useful to everyone, even disabled users. &lt;br&gt;     &lt;div&gt;&lt;img title="Tooltips Scripts - CSS: Menu Descriptions | Mike's Experiments | MikeCherim.com" alt="Tooltips Scripts - CSS: Menu Descriptions | Mike's Experiments | MikeCherim.com" src="http://hiphotos.baidu.com/freezesoul/pic/item/6c8e7a31be763916ebc4afe5.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;      &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://mckay.cshl.edu/balloons3.html"&gt;Balloon Tooltip Demonstration&lt;/a&gt;      &lt;br&gt;     Balloon tooltip demonstration.      &lt;br&gt;     &lt;div&gt;&lt;img title="Tooltips Scripts - Balloon tooltip demonstration" alt="Tooltips Scripts - Balloon tooltip demonstration" src="http://hiphotos.baidu.com/freezesoul/pic/item/5466d707a9de6cc27b8947e5.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;      &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://lixlpixel.org/css_tooltip/"&gt;CSS Tooltipps&lt;/a&gt;, &lt;a href="http://lixlpixel.org/%20-tooltips/"&gt;lixlpixel Javascript Tooltips&lt;/a&gt;      &lt;br&gt;     Similar scripts from the same source:      &lt;br&gt;     &lt;div&gt;&lt;img title="Tooltips Scripts - lixlpixel javascript tooltips | tooltips which stick to the cursor" alt="Tooltips Scripts - lixlpixel javascript tooltips | tooltips which stick to the cursor" src="http://hiphotos.baidu.com/freezesoul/pic/item/705184016fae0dd9277fb5e7.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;      &lt;br&gt;     &lt;div&gt;&lt;img title="Tooltips Scripts - lixlpixel CSS tooltips" alt="Tooltips Scripts - lixlpixel CSS tooltips" src="http://hiphotos.baidu.com/freezesoul/pic/item/b8a157e70dd8a521b9382002.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;      &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.mikezilla.com/exp0004.html"&gt;CSS Rollovers for Tooltips&lt;/a&gt;      &lt;br&gt;     &lt;div&gt;&lt;img title="Tooltips Scripts - | mikezilla | CSS Rollovers for tooltips" alt="Tooltips Scripts - | mikezilla | CSS Rollovers for tooltips" src="http://hiphotos.baidu.com/freezesoul/pic/item/62c684d6f758142007088be1.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li&gt;&lt;a href="http://trentrichardson.com/examples/csstooltips/"&gt;CSS Bubble Tooltips&lt;/a&gt;      &lt;br&gt;     This example will show you how well this tooltip stretches for long descriptions.      &lt;br&gt;     &lt;div&gt;&lt;img title="Tooltips Scripts - CSS Bubble Tooltips" alt="Tooltips Scripts - CSS Bubble Tooltips" src="http://hiphotos.baidu.com/freezesoul/pic/item/5108d5885d340d9ba4c2720c.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;      &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://psacake.com/web/jl.asp"&gt;Pure CSS Tooltips I&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.knusperpixel.com/playground/more-more-links.php"&gt;Simple, accessible "more" links - v2&lt;/a&gt;      &lt;br&gt;     CSS-based solution for displaying tooltips.      &lt;br&gt;     &lt;div&gt;&lt;img title="Tooltips Scripts - Simple, accessible \" alt="Tooltips Scripts - Simple, accessible \" src="http://hiphotos.baidu.com/freezesoul/pic/item/bf948e1034e5b30e213f2e0d.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;      &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://fijiwebdesign.com/content/view/82/77/"&gt;CSS Tooltips&lt;/a&gt;      &lt;br&gt;     Another solution, based only on CSS.      &lt;br&gt;     &lt;div&gt;&lt;img title="Tooltips Scripts - Fiji Web Design - CSS Tooltips - Floating HTML Elements" alt="Tooltips Scripts - Fiji Web Design - CSS Tooltips - Floating HTML Elements" src="http://hiphotos.baidu.com/freezesoul/pic/item/5a68bf31096ebea75edf0e0f.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;      &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.cssplay.co.uk/menu/balloons.html"&gt;Information Balloon PopUps&lt;/a&gt;      &lt;br&gt;     Stu Nicholls delivers another CSS-based solutions.      &lt;br&gt;     &lt;div&gt;&lt;img alt="Screenshot Tooltipp" src="http://hiphotos.baidu.com/freezesoul/pic/item/44d9a7c2f13258140ef477ed.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;     &lt;/li&gt;&lt;/ul&gt; &lt;h4&gt;&lt;strong&gt;Further Solutions&lt;/strong&gt;&lt;/h4&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.snap.com/"&gt;Snap.com&lt;/a&gt;      &lt;br&gt; Snap gives you a visual preview of each result before you click on it. And that improves your odds of picking the right search, without clicking back-and-forth several times. &lt;br&gt;     &lt;div&gt;&lt;img title="Tooltips Scripts - Snap" alt="Tooltips Scripts - Snap" src="http://hiphotos.baidu.com/freezesoul/pic/item/7054e8c4004ac9a68226ac09.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;     &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.dyn-web.com/dhtml/tooltips/"&gt;DHTML Tooltips&lt;/a&gt;      &lt;br&gt; Popup a help tip or information layer onmouseover using this object-based DHTML tooltip code. The basic version, presented on this page, can contain plain text or rich html, images, or images and text. The tooltip can be displayed over a background image. It can move with mouse movement. And it is easy to customize and modify. &lt;br&gt;     &lt;div&gt;&lt;img title="Tooltips Scripts - DHTML Tooltips: Pop-up Layer Onmouseover" alt="Tooltips Scripts - DHTML Tooltips: Pop-up Layer Onmouseover" src="http://hiphotos.baidu.com/freezesoul/pic/item/7bd4aa019426e4091d9583e8.jpg" class="blogimg" border="0"&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li&gt;&lt;a href="http://ashishware.com/Tooltip.shtml"&gt;Animated Tooltip Javascript&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.mojavelinux.com/projects/domtooltip/"&gt;DOM Tooltip&lt;/a&gt;      &lt;br&gt;     DOM Tooltip Script-Library&lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/yui/container/tooltip/"&gt;Yahoo! UI Library: Tooltip&lt;/a&gt;      &lt;br&gt;     The Yahoo! UI Library Toolbox provides among other functions also tooltips.&lt;/li&gt;&lt;/ul&gt;    &lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-1495367366276915198?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/1495367366276915198/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=1495367366276915198' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/1495367366276915198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/1495367366276915198'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/08/40-tooltips-scripts-with-ajax.html' title='40+ Tooltips Scripts With AJAX, JavaScript &amp; CSS'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-7209648566328302242</id><published>2008-08-17T17:52:00.001+08:00</published><updated>2008-08-17T17:52:55.369+08:00</updated><title type='text'>还是卸载了谷歌拼音换上了搜狗拼音</title><content type='html'>&lt;div dir="ltr"&gt;用了很长一段时间的谷歌拼音，今天还是把它给卸载了。&lt;br&gt;原因1： 反应迟钝。&lt;br&gt;原因2： 还是搜狗拼音好。&lt;br&gt;&lt;br&gt; &lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-7209648566328302242?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/7209648566328302242/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=7209648566328302242' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/7209648566328302242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/7209648566328302242'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/08/blog-post.html' title='还是卸载了谷歌拼音换上了搜狗拼音'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-4865051551584364850</id><published>2008-08-16T09:35:00.001+08:00</published><updated>2008-08-16T09:35:13.991+08:00</updated><title type='text'>Rails2.1本地安装</title><content type='html'>&lt;div dir="ltr"&gt;Rails2.1本地安装：&lt;br&gt;&lt;br&gt;如果你在安装执行&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;gem install rails &lt;br&gt;&lt;/blockquote&gt;&lt;br&gt;时遇到问题，通常是由于网络问题或或端口限制所致。&lt;br&gt;&lt;br&gt;这个时候可以选择本地安装方式。&lt;br&gt;&lt;br&gt;本地安装步骤：&lt;br&gt;&lt;ol&gt;&lt;li&gt;从&lt;a href="http://rubyforge.org/frs/?group_id=307" target="_blank"&gt;rubyonrails.com&lt;/a&gt;下载独立的压缩包。压缩包里包含的是一个完整的Rails项目目录结构。按照所需文件位于&lt;b&gt;vender&lt;/b&gt;下。&lt;br&gt;   &lt;br&gt;&lt;/li&gt;&lt;li&gt;进入vender/rails目录；该目录的每个子目录下都有一个pkg目录，pkg目录里包含了.gem文件。将.gem文件copy到一个零时目录。&lt;br&gt;如d:\railsgem下： activesupport-2.1.0.gem、actionpack-2.1.0.gem、activerecord-2.1.0.gem、actionmailer-2.1.0.gem、activeresource-2.1.0.gem&lt;br&gt;   &lt;br&gt;&lt;/li&gt;&lt;li&gt;打开cmd，开始安装。依次执行：&lt;br&gt;&lt;blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"&gt;gem install activeresource-2.1.0.gem&lt;br&gt;gem install actionpack-2.1.0.gem&lt;br&gt;   gem install activerecord-2.1.0.gem&lt;br&gt;gem install actionmailer-2.1.0.gem&lt;br&gt;gem install activeresource-2.1.0.gem &lt;br&gt;gem install rails-2.1.0.gem&lt;br&gt;&lt;/blockquote&gt;&lt;div&gt;&amp;nbsp; &lt;br&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;完成。执行rails -v 显示版本号:Rails 2.1.0&lt;/li&gt;   &lt;/ol&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-4865051551584364850?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/4865051551584364850/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=4865051551584364850' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/4865051551584364850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/4865051551584364850'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/08/rails21.html' title='Rails2.1本地安装'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-6066082525307665717</id><published>2008-08-06T11:05:00.000+08:00</published><updated>2008-08-06T11:07:35.897+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='social web2.0'/><title type='text'>合肥的本地生活门户网站365jia</title><content type='html'>前两天意外地发现这个网站，这两天比较细致地了解了网站的方方面面。&lt;br /&gt;&lt;br /&gt;首先，网站质量。可以看出网站应该是出自一个很有web2.0经验的团队或个人,或者使用一套高质量的开源程序（不过我还没有找到这样的开源程序，这正式我个人想要的）。&lt;br /&gt;&lt;br /&gt;其次，本地化。相信现在有不少创业者把互联网创业以本地化为特色或起点；而不是盲目地在全国甚至世界的范围；越来越多的创业者意识到互联网本地化重要性，尤其是在中国这个缺乏信任的社会环境中。显然，365jia很好地意识到了本地化，却不局限于本地。&lt;br /&gt;&lt;br /&gt;再次，上线时间。显然网站上线的时间不是太长， google上收录了约有 37,900项365jia.cn 的查询结果。翻阅了发现google比较早的收录是在6月份。可能对合肥的大多网名来说，合肥论坛一直是他们最经常访问的，但是，合肥论坛毕竟只是个论坛。网民从心里上还是希望有个更好更优质服务的网站，显然合肥论坛不是。与合肥论坛这个“过热”的最强对手竞争，365jia体现出多方面独特的优势。&lt;br /&gt;&lt;br /&gt;我希望365jia能够从服务，和内容质量上和体验上为自己的网民考虑并改善，提供之；必然会争取到网民们的支持！&lt;br /&gt;&lt;br /&gt;支持365jia！！！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-6066082525307665717?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/6066082525307665717/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=6066082525307665717' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/6066082525307665717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/6066082525307665717'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/08/365jia.html' title='合肥的本地生活门户网站365jia'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-1431510331569301723</id><published>2008-08-03T11:25:00.003+08:00</published><updated>2008-08-03T11:33:14.672+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux Fedora 音乐'/><title type='text'>Linux下在线听音乐</title><content type='html'>我使用的是Fedora9，不习惯把音乐下载后再听。想到baidu和Yahoo听，你就必须得安装RealPlay.Linux下好像没有Windows Media Player。 &lt;br /&gt;&lt;br /&gt;推荐个不错的网站： http://www.8box.cn&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-1431510331569301723?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/1431510331569301723/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=1431510331569301723' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/1431510331569301723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/1431510331569301723'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/08/linux.html' title='Linux下在线听音乐'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-4632384809641964895</id><published>2008-06-23T22:11:00.002+08:00</published><updated>2008-06-23T22:26:33.628+08:00</updated><title type='text'>谁给飞信买单！</title><content type='html'>用电脑可以免费给移动手机发短信，不错，这对于短信量巨大的朋友来说诱惑不小。 &lt;br /&gt;我一直飞信，而且每个月还享受移动“馈赠”的3元话费。心中甚美：不收钱还送钱，天下掉金条了！ &lt;br /&gt;&lt;br /&gt;移动不是傻子，这我明白。我把移动的这种“反常”行为归结为是移动同QQ，MSN等竞争导致的。一直没在意。然而在和老婆一起缴话费时才恍悟：移动果然精明！ &lt;br /&gt;&lt;br /&gt;老婆的话费详单上有一条70多块钱的所谓的“梦网短信”什么费用。移动工作人员说是飞信产生的。我追问：飞信不是不要钱吗？答：在电脑上发是不要钱，但用手机回一毛一条。 &lt;br /&gt;问：手机很少上飞信啊，偶尔上过几次也是登录手机飞信客户端的。答：上面的记录说明你确实在短信模式下发了很多短信。问：动感用户不是有几百条优惠吗？答：回复飞信发来的信息是不享受这种优惠的。 &lt;br /&gt;&lt;br /&gt;我一下子明白了移动的“精明”所在！ &lt;br /&gt;&lt;br /&gt;飞信的存在，不但没使移动在短信方面的利益削减，反而增加。 &lt;br /&gt;电脑用户在“免费获赠话费”的诱惑下，会肆无忌惮地向自己圈内朋友发送飞信。这大大刺激了用户在短信方面的使用量。要知道发信息不要钱，但朋友回是要钱的！即便你是动感地带用户，也享受不了几百条短信优惠！注意在回复飞信时，联系人前面自动加上了“12520”，这就表明你发送的这条信息不再是“网内点对点”了！ &lt;br /&gt;&lt;br /&gt;那如果让朋友回复时去掉“12520”呢？设想一下。我通过电脑给朋友发短信，然后朋友要从通信录里找到我再回复。然后我捡起手机查看短信，再把手机一甩，打开电脑的客户端。为了几毛钱，至于这么折腾嘛！但对移动来说，积少成多，积水成冰，可就是海量收入啦。 &lt;br /&gt;看看我老婆，很少打电话，一个月就有六七块钱进入了移动的腰包！移动推出的飞信从某种意义上说就像银行推出的信用卡，刺激消费，然后牟取暴利！ &lt;br /&gt;&lt;br /&gt;移动，你让我胆战！(http://user.qzone.qq.com/54268028)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-4632384809641964895?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/4632384809641964895/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=4632384809641964895' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/4632384809641964895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/4632384809641964895'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/06/blog-post.html' title='谁给飞信买单！'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-3747328440777337623</id><published>2008-03-13T17:17:00.007+08:00</published><updated>2008-03-13T17:40:34.170+08:00</updated><title type='text'>All elements of a small and agile team</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VX2cLG7TKU0/R9j2ZeCwH-I/AAAAAAAAANs/sPVAvt1gIaE/s1600-h/kernel.gif"&gt;&lt;img style="float:right; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_VX2cLG7TKU0/R9j2ZeCwH-I/AAAAAAAAANs/sPVAvt1gIaE/s400/kernel.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5177158689084153826" /&gt;&lt;/a&gt;&lt;br /&gt;In china , blogspot is blocked by GFW. Only fewer chinese can visit this blog.So i try to update this blog in english.(Although , i am poor in englshi:-)&lt;br /&gt;&lt;br /&gt;Show a image: all elements of a small and agile team :&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-3747328440777337623?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/3747328440777337623/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=3747328440777337623' title='6 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/3747328440777337623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/3747328440777337623'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2008/03/in-china-blogspot-is-blocked-by-gfw.html' title='All elements of a small and agile team'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VX2cLG7TKU0/R9j2ZeCwH-I/AAAAAAAAANs/sPVAvt1gIaE/s72-c/kernel.gif' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-1710390958467990944</id><published>2007-12-26T09:10:00.001+08:00</published><updated>2007-12-26T09:10:30.281+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rubyonrails'/><title type='text'>Ruby 1.9.0 Released</title><content type='html'>&lt;h1&gt;Ruby 1.9.0 Released&lt;/h1&gt;&lt;br /&gt;&lt;p&gt;Matz announced the release of Ruby 1.9.0, a development release.&lt;/p&gt;   	&lt;p&gt;You can fetch it from:&lt;/p&gt;   	&lt;p&gt;&lt;a href="ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-0.tar.bz2"&gt;ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-0.tar.bz2&lt;/a&gt;&lt;/p&gt;   	&lt;pre&gt;&lt;code&gt;407cc7d0032e19eb12216c0ebc7f17b3&lt;/code&gt;&lt;/pre&gt;   	&lt;p&gt;&lt;a href="ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-0.tar.gz"&gt;ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-0.tar.gz&lt;/a&gt;&lt;/p&gt;   	&lt;pre&gt;&lt;code&gt;b20cce98b284f7f75939c09d5c8e846d&lt;/code&gt;&lt;/pre&gt;   	&lt;p&gt;&lt;a href="ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-0.zip"&gt;ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-0.zip&lt;/a&gt;&lt;/p&gt;   	&lt;pre&gt;&lt;code&gt;78b2a5f9a81c5f6775002c4fb24d2d75&lt;br /&gt;&lt;br /&gt;more about ruby 1.9.0 click here &lt;a href="http://eigenclass.org/hiki/Changes+in+Ruby+1.9"&gt;http://eigenclass.org/hiki/Changes+in+Ruby+1.9&lt;/a&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;   &lt;p style="text-align: right; font-size: 8px"&gt;Blogged with &lt;a href="http://www.flock.com/blogged-with-flock" title="Flock" target="_new"&gt;Flock&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-1710390958467990944?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/1710390958467990944/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=1710390958467990944' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/1710390958467990944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/1710390958467990944'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2007/12/ruby-190-released.html' title='Ruby 1.9.0 Released'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-4640281947847105154</id><published>2007-12-17T18:05:00.001+08:00</published><updated>2007-12-17T18:05:41.754+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rubyonrails'/><title type='text'>Successfully upgraded to rails2.0.1</title><content type='html'>原来2007年126日Rails2.0就已发布。期待了很久，今天才知道 :-) &lt;br /&gt;下面准备升级到Rails2.0&lt;br /&gt;&lt;br /&gt;我的windows xp 上安装的还是Rails 1.2.3.&lt;br /&gt;&lt;br /&gt;所以安装提示，&lt;br /&gt;第一步：先将rails gem 先更新到最新版本，执行如下命令：&lt;br /&gt;gem update --system&lt;br /&gt;&lt;br /&gt;更新到最新的rubygems 0.9.5版。&lt;br /&gt;&lt;br /&gt;第二步：执行开始更新Rails&lt;br /&gt;执行如下命令：&lt;br /&gt;gem update rails -y&lt;br /&gt;&lt;br /&gt;别人都说这样简单就可以了。可是我的机器上没有成功。没有安装所需要的依赖包。没办法只要一个个更新。&lt;br /&gt;actionmailer (2.0.1, 1.3.3)&lt;br /&gt;actionpack (2.0.1, 1.13.3)&lt;br /&gt;actionwebservice (1.2.6, 1.2.3)&lt;br /&gt;activerecord (2.0.1, 1.15.3)&lt;br /&gt;activeresource (2.0.1)&lt;br /&gt;activesupport (2.0.1, 1.4.2)&lt;br /&gt;rails有以上相关的gem包，我一个个更新，分别执行了一次: gem update gemname. 注意，actionwebservice 最新的版本就是1.2.6.&lt;br /&gt;&lt;br /&gt;完成所有的动作后，运行rails -v检查。显示:&lt;br /&gt;2.0.1&lt;br /&gt;这个数字证明我已成功地更新到2.0.1版本。&lt;br /&gt;&lt;br /&gt;接下来的有些令人头疼。&lt;br /&gt;&lt;br /&gt;启动mongrel，如果app出现了500错误。&lt;br /&gt;可以参考下面：&lt;br /&gt;&lt;br /&gt;1、如果你用到了Rails的分页的话，classic_pagination 这个plugin 可能是必要的（要不然，你把应用中的所有paginate 去掉:-)）。&lt;br /&gt;&amp;nbsp;可以在这里找到: &lt;a href="http://redmine.rubyforge.org/svn/trunk/vendor/plugins/classic_pagination/"&gt;http://redmine.rubyforge.org/svn/trunk/vendor/plugins/classic_pagination/&lt;/a&gt;&lt;br /&gt;没有找到gem包，我是一个保存下来的。然后放到vender/plugins/calss_pagination下。&lt;br /&gt;&lt;br /&gt;2、找了些资料，rails2.0 Removed&amp;nbsp; &lt;span class="searchword0"&gt;extract_options_from_args&lt;/span&gt;! 方法。这导致有些plugins无法运行。要解决这个问题有两个选择：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;等待plugin的作者更新plugin的代码&lt;/li&gt;&lt;li&gt;把被删除的&lt;span class="searchword0"&gt;extract_options_from_args&lt;/span&gt;! 还原，做法如下：&lt;br /&gt;在environment.rb加上:&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;module ActiveRecord&lt;br /&gt;&amp;nbsp; class Base&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; class &amp;lt;&amp;lt; self&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; def extract_options_from_args!(args)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; args.extract_options!&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp; end&lt;br /&gt;end&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;这样，我的成功的更新到rails 2.0.1并使我以前的app跑了起来。&lt;br /&gt;&lt;br /&gt;:-0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-4640281947847105154?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/4640281947847105154/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=4640281947847105154' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/4640281947847105154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/4640281947847105154'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2007/12/successfully-upgraded-to-rails201.html' title='Successfully upgraded to rails2.0.1'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-7275142694948616335</id><published>2007-12-13T23:31:00.001+08:00</published><updated>2007-12-13T23:31:13.846+08:00</updated><title type='text'>slideshare</title><content type='html'>最近迷上了&lt;font size="4"&gt;&lt;a href="http://slideshare.net"&gt;slideshare.net&lt;/a&gt;&lt;/font&gt;， 它是一个幻灯片分享的web2.0应用。不过，说它只是分享幻灯片就太狭隘了点，因为除了我们的ppt文件外你还可以分享pdf,pps和odp. 更重要的是你还可以为你的幻灯片配上声音（或叫演讲、解说），就像MP3的同步歌词一样。&lt;br /&gt;&lt;br /&gt;最重要的还是&lt;font size="4"&gt;&lt;a href="http://slideshare.net/"&gt;slideshare.net&lt;/a&gt;&lt;font size="3"&gt;&lt;font size="2"&gt;上的好的&lt;/font&gt;slides&lt;/font&gt;&lt;/font&gt;。&lt;br /&gt;&lt;br /&gt;我主要对以下几个方面的内容感兴趣：&lt;br /&gt;&lt;span style="font-size: 38px;"&gt;&lt;/span&gt;&lt;span style="font-size: 19px;"&gt;&lt;a href="http://www.slideshare.net/tag/technology" style="" title="23 times" class="bright_blue_link" id=""&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 14px;"&gt;&lt;/span&gt;     &lt;span style="font-size: 35px;"&gt;&lt;a href="http://www.slideshare.net/tag/web" style="" title="75 times" class="bright_blue_link" id=""&gt;web&lt;/a&gt;&lt;/span&gt;     &lt;span style="font-size: 38px;"&gt;&lt;a href="http://www.slideshare.net/tag/web2-0" style="" title="88 times" class="bright_blue_link" id=""&gt;web2.0&lt;/a&gt;&lt;/span&gt; &amp;nbsp;      &lt;span style="font-size: 19px;"&gt;&lt;a href="http://www.slideshare.net/tag/technology" style="" title="23 times" class="bright_blue_link" id=""&gt;technology&lt;/a&gt; &lt;/span&gt;     &lt;span style="font-size: 16px;"&gt;&lt;a href="http://www.slideshare.net/tag/elearning" style="" title="13 times" class="bright_blue_link" id=""&gt;elearning&lt;/a&gt; &lt;font size="5"&gt;&lt;a href="http://www.slideshare.net/search/slideshow?q=rails&amp;amp;submit=post&amp;amp;commit=Search"&gt;rails&lt;br /&gt;&lt;/a&gt;&lt;/font&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 16px;"&gt;&lt;/span&gt;&lt;span style="font-size: 15px;"&gt;&lt;/span&gt;&lt;span style="font-size: 15px;"&gt;&lt;/span&gt;&lt;span style="font-size: 15px;"&gt;&lt;/span&gt;特别是下面的slide 的一句话 &lt;font size="5"&gt;“Design is not just what it looks like and feels like, Design is how it works.” &lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   &lt;div style="width: 425px; text-align: left;" id="__ss_49815"&gt;&lt;object style="margin: 0px;" height="355" width="425"&gt;&lt;param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=improving-interface-design-29757"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=improving-interface-design-29757" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="355" width="425"&gt;&lt;/object&gt;&lt;div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;"&gt;&lt;a href="http://www.slideshare.net/?src=embed"&gt;&lt;img src="http://static.slideshare.net/swf/logo_embd.png" style="border: 0px none ; margin-bottom: -5px;" alt="SlideShare" /&gt;&lt;/a&gt; | &lt;a href="http://www.slideshare.net/garrettdimon/improving-interface-design" title="View 'Improving Interface Design' on SlideShare"&gt;View&lt;/a&gt; | &lt;a href="http://www.slideshare.net/upload"&gt;Upload your own&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-7275142694948616335?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/7275142694948616335/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=7275142694948616335' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/7275142694948616335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/7275142694948616335'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2007/12/slideshare.html' title='slideshare'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VX2cLG7TKU0/STYT_By48NI/AAAAAAAAAUc/gSX7DJBqOVU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217839564245167925.post-8234356798536478859</id><published>2007-12-13T19:57:00.000+08:00</published><updated>2007-12-13T20:09:52.786+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='创业路上'/><title type='text'>shanxue.com startup @2007</title><content type='html'>2007年低，我和另一个合伙人创立了善学教育科技。我们正在运营善学网(&lt;a href="http://www.shanxue.com"&gt;http://www.shanxue.com&lt;/a&gt;)，在这一年我们用了最少的人力，最少的物力，把我们的梦想搭建起来。&lt;br /&gt;年关将至，我们也在积极准备着新的一年的计划和努力；同时我也需要总结一下今年我们的走过的艰辛历程。我打算在这里（&lt;a href="http://shanxuewang.blogspot.com"&gt;http://shanxuewang.blogspot.com&lt;/a&gt;）记录善学网的点滴。敬请关注&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5217839564245167925-8234356798536478859?l=iamjouy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamjouy.blogspot.com/feeds/8234356798536478859/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5217839564245167925&amp;postID=8234356798536478859' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/8234356798536478859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217839564245167925/posts/default/8234356798536478859'/><link rel='alternate' type='text/html' href='http://iamjouy.blogspot.com/2007/12/shanxuecom-startup-2007.html' title='shanxue.com startup @2007'/><author><name>Jouy(91)</name><uri>http://www.blogger.com/profile/05791489858472872101</uri><email>noreply@blogge
