<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_eoiioe</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/35354/rss</id><updated>2012-03-28T13:36:49Z</updated><author><name>eoiioe</name><uri>http://www.cnblogs.com/eoiioe/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eoiioe/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/35354/rss"/><entry><id>http://www.cnblogs.com/eoiioe/archive/2012/03/28/2422089.html</id><title type="text">关于android开发在布局中使用sharp时遇到的问题</title><summary type="text">最近学习使用android中的sharp元素，其中的corners属性令我甚是费解，在此记录下问题解决心得，以便查阅！从网上找到一篇讲解sharp的文章，自认为写的非常详细 http://kofi1122.blog.51cto.com/2815761/521605， 观察其中sharp的corners节点的使用方法如下代码引用，照着尝试去做，结果令我很是困惑。&lt;cornersandroid:topRightRadius="5dp"android:bottomLeftRadius="5dp"android:topLeftRadius="0</summary><published>2012-03-28T13:26:00Z</published><updated>2012-03-28T13:26:00Z</updated><author><name>eoiioe</name><uri>http://www.cnblogs.com/eoiioe/</uri></author><link rel="alternate" href="http://www.cnblogs.com/eoiioe/archive/2012/03/28/2422089.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eoiioe/archive/2012/03/28/2422089.html"/><content type="html">&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;&lt;/span&gt;最近学习使用android中的sharp元素，其中的corners属性令我甚是费解，在此记录下问题解决心得，以便查阅！&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://kofi1122.blog.51cto.com/2815761/521605"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;/span&gt;从网上找到一篇讲解sharp的文章，自认为写的非常详细 &amp;nbsp;&lt;a href="http://kofi1122.blog.51cto.com/2815761/521605"&gt;http://kofi1122.blog.51cto.com/2815761/521605&lt;/a&gt;， 观察其中sharp的corners节点的使用方法如下代码引用，照着尝试去做，结果令我很是困惑。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;corners&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: #FF0000;"&gt;android:topRightRadius&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="5dp"&lt;/span&gt;&lt;span style="color: #FF0000;"&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;android:bottomLeftRadius&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="5dp"&lt;/span&gt;&lt;span style="color: #FF0000;"&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;android:topLeftRadius&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="0dp"&lt;/span&gt;&lt;span style="color: #FF0000;"&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;android:bottomRightRadius&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="0dp"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&lt;br /&gt;&lt;/span&gt;/&amp;gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;在android2.1的环境中使用如上代码，完全没有圆角，只有加上android:radius="5dp"才会出现圆角（不知道是不是android2.1的问题）。&lt;/p&gt;&lt;p&gt;其中&amp;nbsp;&lt;span style="font-family: 'Courier New'; font-size: 13px; line-height: 19px; background-color: #f5f5f5; color: #ff0000; "&gt;android:topLeftRadius&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 13px; line-height: 19px; background-color: #f5f5f5; color: #0000ff; "&gt;="0dp"&lt;/span&gt;&amp;nbsp; 和&amp;nbsp;&lt;span style="font-family: 'Courier New'; font-size: 13px; line-height: 19px; background-color: #f5f5f5; color: #ff0000; "&gt;android:bottomRightRadius&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 13px; line-height: 19px; background-color: #f5f5f5; color: #0000ff; "&gt;="0dp"&lt;/span&gt;&lt;/p&gt;&lt;p&gt;是罪魁祸首， 不知道笔者为什么会写成0还贴出了效果图， 查了很多资料才知道， 这个值不能设0 ，设为1dp后， 所有圆角效果就出现了。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;郁闷的就是为什么设0不起作用呢， 如果想做部分直角，部分圆角效果根本无法完成， 有个办法是将1dp设成1px就可以以假乱真了，不要设1dp（设1dp圆角还是很明显的），不知道这算不算android系统的bug...&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;corners&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: #FF0000;"&gt;android:topRightRadius&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="5dp"&lt;/span&gt;&lt;span style="color: #FF0000;"&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;android:bottomLeftRadius&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="5dp"&lt;/span&gt;&lt;span style="color: #FF0000;"&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;android:topLeftRadius&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="1px"&lt;/span&gt;&lt;span style="color: #FF0000;"&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;android:bottomRightRadius&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="1px"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&lt;br /&gt;&lt;/span&gt;/&amp;gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/eoiioe/aggbug/2422089.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/eoiioe/archive/2012/03/28/2422089.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/eoiioe/archive/2011/09/03/2164614.html</id><title type="text">如何快速启动chrome插件</title><summary type="text">最近开发了一段时间的chrome app，今将一些体会感想分享给大家（不是App开发基础教程）。 chrome开放了丰富的API，涵盖了浏览器的方方面面，其应用可以说“只有想不到，没有做不到”。然而，酒香也怕巷子深，单纯依赖chrome工具栏上的简单入口（Browser Actions, Page Actions）难以引起用户注意，如何让一个功能强大的扩展被用户很方便的使用起来，困扰了我很长时间...</summary><published>2011-09-03T05:18:00Z</published><updated>2011-09-03T05:18:00Z</updated><author><name>eoiioe</name><uri>http://www.cnblogs.com/eoiioe/</uri></author><link rel="alternate" href="http://www.cnblogs.com/eoiioe/archive/2011/09/03/2164614.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eoiioe/archive/2011/09/03/2164614.html"/><content type="html">&lt;p&gt;&amp;nbsp; &amp;nbsp; 最近开发了一段时间的chrome app，今将一些体会感想分享给大家（不是App开发基础教程）。&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; chrome开放了丰富的API，涵盖了浏览器的方方面面，其应用可以说&amp;#8220;只有想不到，没有做不到&amp;#8221;。然而，酒香也怕巷子深，单纯依赖chrome工具栏上的简单入口（Browser Actions, Page Actions）难以引起用户注意，如何让一个功能强大的扩展被用户很方便的使用起来，困扰了我很长时间。&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; 经过一段时间的探索，总结了几种app入口方式 ，下面以&lt;a href="https://chrome.google.com/webstore/detail/emjphcoeoofohgimppddgblomjbojnnh" target="_blank"&gt;&lt;img border="0" alt="webElements logo" src="http://images.cnblogs.com/cnblogs_com/eoiioe/webElements_logo.png" width="25" height="25" /&gt;webElements (网页元素查看器，提取页面图片、正文，尤其&lt;span&gt;适合论坛看图，轻松阅读文章&lt;/span&gt;)&lt;/a&gt; 为例，一一介绍。&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &lt;strong&gt;入口一：工具栏&amp;nbsp;Browser Actions 和 Page Actions&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这种方式是&lt;a href="http://code.google.com/chrome/extensions/getstarted.html" target="_blank"&gt;chrome应用开发文档&lt;/a&gt;中默认提供的入口，不过多介绍。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div align="center"&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/eoiioe/webElements_toolbar.png" width="328" height="110" /&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 优点：简单容易上手，不需要额外开发。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 缺点：通常展现在工具栏右上角，并且需要鼠标点击触发，无形中加大了用户的使用成本。并且很多应用图标摆放在一起，没有亮点，难以调动用户频繁使用&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; 难易程度：容易&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;入口二：快捷键&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这个也比较容易理解，利用应用向页面注入JS脚本，监控页面按键（不记录任何按键信息），捕获到快捷键时直接启动应用。需要有选项页设置是否启用快捷键，以及快捷键设置等内容。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div align="center"&gt;&lt;img border="0" alt="webElements Options" src="http://images.cnblogs.com/cnblogs_com/eoiioe/webElements_options.png" width="500" height="333" /&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 优点：方便键盘操作，一键启动应用，不需要鼠标长距离移动点击，摆脱对鼠标的依赖&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 缺点：快捷键定义容易与其他软件冲突；该方式比较隐蔽，不容易让用户知道；需要额外开发。&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; 难以程度：适中&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;入口三：鼠标手势&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 国内浏览器培养出了一大批鼠标手势的忠实粉丝，基于这个现状，就有了利用鼠标手势启动扩展应用的思路。chrome本身不带鼠标手势功能，应用商店也涌现出了一大批鼠标手势的扩展应用。拜于chrome扩展间可以相互通信的机制，使用鼠标手势启动扩展便有了理论条件支持。现&lt;a href="https://chrome.google.com/webstore/detail/emjphcoeoofohgimppddgblomjbojnnh" target="_blank"&gt;&lt;img border="0" alt="webElements logo" src="http://images.cnblogs.com/cnblogs_com/eoiioe/webElements_logo.png" width="25" height="25" /&gt;webElements&lt;/a&gt;已实现通过&lt;a href="https://chrome.google.com/webstore/detail/kfbkjmofblefhdbabmjfecidcglggoaa" target="_blank"&gt;&lt;img border="0" alt="Chrome Mouse Gesture logo" src="http://images.cnblogs.com/cnblogs_com/eoiioe/chrome_mouse_gesture_logo.png" width="25" height="25" /&gt;Chrome Mouse Gesture&lt;/a&gt; 这款鼠标手势扩展直接调用，我个人最喜欢这种方式。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div align="center"&gt;&lt;img border="0" alt="webElements Mouse Gesture" src="http://images.cnblogs.com/cnblogs_com/eoiioe/webElements-mouseGesture.jpg" width="500" height="318" /&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 优点：鼠标手势粉丝众多，无需长距离移动鼠标，增加趣味性&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 缺点：需要另外安装鼠标手势扩展或将鼠标手势整合到应用中&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 难易程度：难&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &lt;strong&gt;入口四：页面小助手&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 所谓&amp;#8220;小助手&amp;#8221;是指在页面上展现一些内容，提醒一些信息，来引起用户注意。此方式较前三种入口，可谓最直接的方式。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 该方式要点：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1、不易过分干扰用户浏览行为；&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2、抓住用户最感兴趣的内容提醒；&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3、突出品牌。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div align="center"&gt;&lt;img border="0" alt="webElements Helper" src="http://images.cnblogs.com/cnblogs_com/eoiioe/webElements-helper.png" width="105" height="302" /&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 优点：使用户快速感知所关心的内容（快捷键和鼠标手势都无法做到）；使应用品牌直面用户，加深品牌印象&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 缺点：开发中需要注意页面兼容性&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 难易程度：适中&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 个人观点，难免疏漏，欢迎拍砖！赐教！&lt;/p&gt;&lt;p&gt;-------------------------------------------------- 无敌分隔线 ------------------------------------------------------&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 贴几张 &lt;a href="https://chrome.google.com/webstore/detail/emjphcoeoofohgimppddgblomjbojnnh" target="_blank"&gt;&lt;img border="0" alt="webElements logo" src="http://images.cnblogs.com/cnblogs_com/eoiioe/webElements_logo.png" width="25" height="25" /&gt;webElements&lt;/a&gt;&amp;nbsp;截图，欢迎围观&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div align="center"&gt;&lt;img border="0" alt="webElements img" src="http://images.cnblogs.com/cnblogs_com/eoiioe/webElements-imgs.jpg" width="650" /&gt;&lt;/div&gt;&lt;p align="center"&gt;提取页面图片分类查看&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div align="center"&gt;&lt;img border="0" alt="webElements slide" src="http://images.cnblogs.com/cnblogs_com/eoiioe/webElements-slide.jpg" width="650" /&gt;&lt;/div&gt;&lt;p align="center"&gt;启用幻灯片模式浏览图片&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div align="center"&gt;&lt;img border="0" alt="webElements text" src="http://images.cnblogs.com/cnblogs_com/eoiioe/webElements-text.png" width="650" /&gt;&lt;/div&gt;&lt;p align="center"&gt;抽取正文&lt;/p&gt;  &lt;img src="http://www.cnblogs.com/eoiioe/aggbug/2164614.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/eoiioe/archive/2011/09/03/2164614.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/eoiioe/archive/2011/08/01/2123436.html</id><title type="text">深入解析IE兼容模式</title><summary type="text">英文原文：http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx文件兼容性用于定义让IE如何编译你的网页。此文件解释文件兼容性，如何指定你网站的文件兼容性模式以及如何判断一个网页该使用的文件模式。前言为了帮助确保你的网页在所有未来的IE版本都有一致的外观，IE8引入了文件兼容性。在IE6中引入一个增设的兼容性模式，文件兼容性使你能够在IE呈现你的网页时选择特定编译模式。新的IE为了确保网页在未来的版本中都有一支的外观，IE8引入了文件兼容性。当你引入一个增设的兼容性模式，此文章说明文件兼容性的必要性，列出现有版本IE能使用的文件</summary><published>2011-08-01T01:44:00Z</published><updated>2011-08-01T01:44:00Z</updated><author><name>eoiioe</name><uri>http://www.cnblogs.com/eoiioe/</uri></author><link rel="alternate" href="http://www.cnblogs.com/eoiioe/archive/2011/08/01/2123436.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eoiioe/archive/2011/08/01/2123436.html"/><content type="html">&lt;span class="Apple-style-span" style="font-family: verdana; background-color: #ffffff; "&gt;英文原文：&lt;a href="http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx" style="color: #78afd3; text-decoration: underline; "&gt;http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: verdana; background-color: #ffffff; "&gt;&lt;div id="cnblogs_post_body" style="font-family: verdana; word-wrap: break-word; "&gt;&lt;div style="font-family: verdana; word-wrap: break-word; "&gt;&lt;p&gt;文件兼容性用于定义让IE如何编译你的网页。此文件解释文件兼容性，如何指定你网站的文件兼容性模式以及如何判断一个网页该使用的文件模式。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: 18pt; "&gt;&lt;strong style="font-size: 14pt; "&gt;前言&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;为了帮助确保你的网页在所有未来的IE版本都有一致的外观，IE8引入了文件兼容性。在IE6中引入一个增设的兼容性模式，文件兼容性使你能够在IE呈现你的网页时选择特定编译模式。&lt;br /&gt;新的IE为了确保网页在未来的版本中都有一支的外观，IE8引入了文件兼容性。当你引入一个增设的兼容性模式，&lt;br /&gt;此文章说明文件兼容性的必要性，列出现有版本IE能使用的文件兼容性模式并示范如何选择特定的兼容性模式。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;strong style="font-size: 14pt; "&gt;了解文件兼容性的必要性&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;每个主要版本IE新增的功能都是为了让浏览器更容易使用、增加安全性及更支持业界标准。以这些作为IE的特色，其中一个风险就是旧版本网站无法正确的显示。&lt;/p&gt;&lt;p&gt;为了将这个风险降到最低，IE6允许网页开发人员选择IE编译和显示他们网页的方式。"Quirks mode"为预设，这会使页面以旧版本浏览器的视点显示，"Standards mode"(也称为"strict mode")特点是支持业界标准最为完善。然而要利用这个增强的支持功能，网页必须包含恰当的&lt;a href="http://msdn.microsoft.com/en-us/library/ms533737(VS.85).aspx" style="color: #78afd3; text-decoration: underline; "&gt;&amp;lt;!DOCTYPE&amp;gt;&lt;/a&gt;指令。&lt;/p&gt;&lt;p&gt;若一个网页没有包含&lt;strong&gt;&amp;lt;!DOCTYPE&amp;gt;&lt;/strong&gt;指令，IE6会将它以quirks mode显示。若网页包含有效的&lt;strong&gt;&amp;lt;!DOCTYPE&amp;gt;&lt;/strong&gt;指令但浏览器无法辨识，IE6会将它以IE6 standards mode显示。因为少数网站已经包含&lt;strong&gt;&amp;lt;!DOCTYPE&amp;gt;&lt;/strong&gt;指令，兼容性模式的切换相当成功。这使网页开发人员能选择将他们的网页转移为standards mode的最佳时机。&lt;/p&gt;&lt;p&gt;随著时间经过，更多网站开始使用standards mode。它们也开始使用IE6的特性和功能来检测IE。举例来说，IE6不支持&lt;a href="http://msdn.microsoft.com/en-us/library/aa770077(VS.85).aspx" style="color: #78afd3; text-decoration: underline; "&gt;universal selector&lt;/a&gt;(即css之全局选择器 * {})，一些网站便使用它来针对IE做特定的对应。&lt;/p&gt;&lt;p&gt;当 IE7增加了对全域选择器的支持，那些依赖IE6特点的网站便无法侦测出这个新版本的浏览器。因此那些针对IE的特定对应无法应用于IE7，造成这些网站便无法如他们预期的显示。由于&lt;strong&gt;&amp;lt;!DOCTYPE&amp;gt;&lt;/strong&gt;只支持两种兼容性模式，受到影响的网站拥有者被迫更新他们的网站使其能支持IE7。&lt;/p&gt;&lt;p&gt;IE8 比之前的任何版本浏览器都更支持业界标准，因此针对旧版本浏览器设计的网页可能无法如预期般呈现。为了帮助减轻所有问题，IE8引入文件兼容性的概念，使你能选择你的网页设计要对应的特定IE版本。文件兼容性在IE8增加了一些新的模式，这些模式能告诉浏览器如何解析和编译一个网页。若你的网页无法在 ie8正确的显示，你可以更新你的网站使它支持最新的网页标准(优先选项)或在你的页面上新增一个&lt;a href="http://msdn.microsoft.com/en-us/library/ms535853(VS.85).aspx" style="color: #78afd3; text-decoration: underline; "&gt;meta&lt;/a&gt;元素用于告诉IE8如何依照旧版本浏览器编译你的页面。&lt;/p&gt;&lt;p&gt;这能让你选择将你的网站更新支持IE8新特点的时机。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; "&gt;&lt;strong&gt;认识文件兼容性模式&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;IE8支持几种文件兼容性模式，它们具有不同的特性并影响内容显示的方式。&lt;/p&gt;&lt;p&gt;&amp;#8226;Emulate IE8 mode指示IE使用&lt;strong&gt;&amp;lt;!DOCTYPE&amp;gt;&lt;/strong&gt;指令来决定如何编译内容。Standards mode指令会显示成IE8 Standards mode而quirks mode会显示成IE5 mode。不同于IE8 mode，Emulate IE8 mode重视&lt;strong&gt;&amp;lt;!DOCTYPE&amp;gt;&lt;/strong&gt;指令。&lt;br /&gt;&amp;#8226;Emulate IE7 mode指示IE使用&lt;strong&gt;&amp;lt;!DOCTYPE&amp;gt;&lt;/strong&gt;指令来决定如何编译内容。Standards mode指令会显示成IE7 Standards mode而quirks mode会显示成IE5 mode。不同于IE7 mode，Emulate IE7 mode重视&lt;strong&gt;&amp;lt;!DOCTYPE&amp;gt;&lt;/strong&gt;指令。对于许多网页来说这是最推荐的兼容性模式。&lt;br /&gt;&amp;#8226;IE5 mode 编译内容如同IE7的quirks mode之显示状况，和IE5中显示的非常类似。&lt;br /&gt;&amp;#8226;IE7 mode编译内容如同IE7的standards mode之显示状况，无论网页是否含有&lt;strong&gt;&amp;lt;!DOCTYPE&amp;gt;&lt;/strong&gt;指令。&lt;br /&gt;&amp;#8226;IE8 mode提供对业界标准的最高支持，包含&amp;nbsp;&lt;a href="http://www.w3.org/TR/CSS21/" style="color: #78afd3; text-decoration: underline; "&gt;W3C Cascading Style Sheets Level 2.1 Specification&lt;/a&gt;和&lt;a href="http://www.w3.org/tr/selectors-api" style="color: #78afd3; text-decoration: underline; "&gt;W3C Selectors API&lt;/a&gt;，并有限的支持&amp;nbsp;&lt;a href="http://www.w3.org/TR/css3-roadmap/" style="color: #78afd3; text-decoration: underline; "&gt;W3C Cascading Style Sheets Level 3 Specification (Working Draft)&lt;/a&gt;。&lt;br /&gt;&amp;#8226;Edge mode指示IE以目前可用的最高模式显示内容。当使用IE8时其等同于IE8 mode。若(假定)未来放出支持更高兼容性模式的IE，使用Edge mode的页面会使用该版本能支持的最高模式来显示内容。同样的那些页面在使用IE8浏览时仍会照常显示。&lt;/p&gt;&lt;p&gt;&lt;em&gt;由于edge mode使用该IE版本所能支持的最高模式来显示所浏览的网页内容，建议仅使用于测试页及其他非商用页面。&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; "&gt;&lt;strong&gt;指定文件兼容性模式&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;要为你的网页指定文件模式，需要在你的网页中使用&lt;strong&gt;meta&lt;/strong&gt;元素放入X-UA-Compatible&amp;nbsp;&lt;wbr&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms533876(VS.85).aspx" style="color: #78afd3; text-decoration: underline; "&gt;http-equiv&lt;/a&gt;&amp;nbsp;&lt;wbr&gt;标头。以下是指定为Emulate IE7 mode 兼容性之范例。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;wbr&gt;&lt;/p&gt;&lt;div style="font-family: verdana; word-wrap: break-word; "&gt;&lt;span style="color: #0000ff; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;html&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;head&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000; "&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000; "&gt;&amp;nbsp;&lt;wbr&gt;Mimic&amp;nbsp;&lt;wbr&gt;Internet&amp;nbsp;&lt;wbr&gt;Explorer&amp;nbsp;&lt;wbr&gt;7&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #008000; "&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;meta&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #ff0000; "&gt;http-equiv&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;="X-UA-Compatible"&lt;/span&gt;&lt;span style="color: #ff0000; "&gt;&amp;nbsp;&lt;wbr&gt;content&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;="IE=EmulateIE7"&lt;/span&gt;&lt;span style="color: #ff0000; "&gt;&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;title&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;My&amp;nbsp;&lt;wbr&gt;Web&amp;nbsp;&lt;wbr&gt;Page&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000; "&gt;title&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000; "&gt;head&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;body&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;p&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;Content&amp;nbsp;&lt;wbr&gt;goes&amp;nbsp;&lt;wbr&gt;here.&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000; "&gt;p&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000; "&gt;body&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000; "&gt;html&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;其内容随著指定的页面模式而更改，当要模拟IE7时，指定&lt;strong&gt;IE=EmulateIE7&lt;/strong&gt;，指定&lt;strong&gt;IE=5&lt;/strong&gt;,&amp;nbsp;&lt;strong&gt;IE=7&lt;/strong&gt;, 或&lt;strong&gt;IE=8&lt;/strong&gt;来选择其中一种兼容性模式。你也可以指定&lt;strong&gt;IE=edge&lt;/strong&gt;来指示IE8使用它支持的最高模式。&lt;/p&gt;&lt;p&gt;X-UA-compatible标头没有大小写之分。然而除了&lt;a href="http://msdn.microsoft.com/en-us/library/ms535910(VS.85).aspx" style="color: #78afd3; text-decoration: underline; "&gt;title&lt;/a&gt;元素及其他的&lt;strong&gt;meta&lt;/strong&gt;元素之外，它必须出现在网页&lt;a href="http://msdn.microsoft.com/en-us/library/ms535252(VS.85).aspx" style="color: #78afd3; text-decoration: underline; "&gt;header节&lt;/a&gt;其它元素之前的位置，&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;strong style="font-size: 14pt; "&gt;设定网站服务器以指定预设兼容性模式&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;网站管理员可籍着为网站定义一个自订标头来为他们的网站预设一个特定的文件兼容性模式。这个特定的方法取决于你的网站服务器。举例来说，下列的 web.config文件使Microsoft Internet Information Services (IIS)能定义一个自订标头以自动使用IE7 mode来编译所有网页。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;wbr&gt;&lt;/p&gt;&lt;div style="font-family: verdana; word-wrap: break-word; "&gt;&lt;span style="color: #0000ff; "&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #ff00ff; "&gt;xml&amp;nbsp;&lt;wbr&gt;version="1.0"&amp;nbsp;&lt;wbr&gt;encoding="utf-8"&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;configuration&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;system.webServer&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;httpProtocol&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;customHeaders&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;clear&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;add&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #ff0000; "&gt;name&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;="X-UA-Compatible"&lt;/span&gt;&lt;span style="color: #ff0000; "&gt;&amp;nbsp;&lt;wbr&gt;value&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;="IE=EmulateIE7"&lt;/span&gt;&lt;span style="color: #ff0000; "&gt;&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000; "&gt;customHeaders&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000; "&gt;httpProtocol&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000; "&gt;system.webServer&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000; "&gt;configuration&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;若你已于网站服务器指定了一个预设的文件兼容性模式，你可以在个别页面上指定不同的文件兼容性模式来盖过它。在网页中指定的模式优先权高于服务器中所指定的模式。&lt;/p&gt;&lt;p&gt;请查阅你的网站服务器关于指定自订标头的资讯，或看更多资料:&lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc817573.aspx" style="color: #78afd3; text-decoration: underline; "&gt;Implementing the META Switch on Apache&lt;br /&gt;&lt;/a&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc817572.aspx" style="color: #78afd3; text-decoration: underline; "&gt;Implementing the META Switch on IIS&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;strong style="font-size: 14pt; "&gt;判定文件兼容性模式&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;要判定网页使用IE8浏览时的文件兼容性模式，使用&lt;a href="http://msdn.microsoft.com/en-us/library/ms531073(VS.85).aspx" style="color: #78afd3; text-decoration: underline; "&gt;document&lt;/a&gt;&amp;nbsp;object(文档对象)的&lt;a href="http://msdn.microsoft.com/en-us/library/cc196988(VS.85).aspx" style="color: #78afd3; text-decoration: underline; "&gt;documentMode&lt;/a&gt;功能。例如在IE8的网址列输入下列程式码会显示目前页面的文件模式。&lt;/p&gt;&lt;div style="font-family: verdana; word-wrap: break-word; "&gt;&lt;span style="color: #000000; "&gt;javascript:alert(document.documentMode);&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;wbr&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;documentMode&lt;/strong&gt;功能会回传一个数值对应目前页面的文件兼容性模式，举例来说，若网页指定为支持IE8模式，&lt;strong&gt;documentMode&lt;/strong&gt;便会回传值"&lt;strong&gt;8&lt;/strong&gt;"。&lt;/p&gt;&lt;p&gt;在IE6引入的&lt;a href="http://msdn.microsoft.com/en-us/library/ms533687(VS.85).aspx" style="color: #78afd3; text-decoration: underline; "&gt;compatMode&lt;/a&gt;功能不支持在IE8引入的&lt;strong&gt;documentMode&lt;/strong&gt;功能。目前使用&lt;strong&gt;compatMode&lt;/strong&gt;建立的应用程式还能在IE8中作用，但它们必须更新为使用documentMode。&lt;/p&gt;&lt;p&gt;若你希望使用JavaScript判定一个文件的兼容性模式，引入下面范例的这段程式码可支持旧版本的IE。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;wbr&gt;&lt;/p&gt;&lt;div style="font-family: verdana; word-wrap: break-word; "&gt;&lt;span style="color: #000000; "&gt;engine&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;null&lt;/span&gt;&lt;span style="color: #000000; "&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;if&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;nbsp;&lt;wbr&gt;(window.navigator.appName&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;==&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;Microsoft&amp;nbsp;&lt;wbr&gt;Internet&amp;nbsp;&lt;wbr&gt;Explorer&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;)&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; "&gt;&amp;nbsp;&lt;wbr&gt;This&amp;nbsp;&lt;wbr&gt;is&amp;nbsp;&lt;wbr&gt;an&amp;nbsp;&lt;wbr&gt;IE&amp;nbsp;&lt;wbr&gt;browser.&amp;nbsp;&lt;wbr&gt;What&amp;nbsp;&lt;wbr&gt;mode&amp;nbsp;&lt;wbr&gt;is&amp;nbsp;&lt;wbr&gt;the&amp;nbsp;&lt;wbr&gt;engine&amp;nbsp;&lt;wbr&gt;in?&lt;/span&gt;&lt;span style="color: #008000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;if&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;nbsp;&lt;wbr&gt;(document.documentMode)&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #008000; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; "&gt;&amp;nbsp;&lt;wbr&gt;IE8&lt;/span&gt;&lt;span style="color: #008000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;engine&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;nbsp;&lt;wbr&gt;document.documentMode;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;else&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #008000; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; "&gt;&amp;nbsp;&lt;wbr&gt;IE&amp;nbsp;&lt;wbr&gt;5-7&lt;/span&gt;&lt;span style="color: #008000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;{&lt;br /&gt;engine&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;5&lt;/span&gt;&lt;span style="color: #000000; "&gt;;&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #008000; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; "&gt;&amp;nbsp;&lt;wbr&gt;Assume&amp;nbsp;&lt;wbr&gt;quirks&amp;nbsp;&lt;wbr&gt;mode&amp;nbsp;&lt;wbr&gt;unless&amp;nbsp;&lt;wbr&gt;proven&amp;nbsp;&lt;wbr&gt;otherwise&lt;/span&gt;&lt;span style="color: #008000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;if&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;nbsp;&lt;wbr&gt;(document.compatMode)&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;if&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;nbsp;&lt;wbr&gt;(document.compatMode&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;==&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;CSS1Compat&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;)&lt;br /&gt;engine&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;7&lt;/span&gt;&lt;span style="color: #000000; "&gt;;&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #008000; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; "&gt;&amp;nbsp;&lt;wbr&gt;standards&amp;nbsp;&lt;wbr&gt;mode&lt;/span&gt;&lt;span style="color: #008000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; "&gt;&amp;nbsp;&lt;wbr&gt;the&amp;nbsp;&lt;wbr&gt;engine&amp;nbsp;&lt;wbr&gt;variable&amp;nbsp;&lt;wbr&gt;now&amp;nbsp;&lt;wbr&gt;contains&amp;nbsp;&lt;wbr&gt;the&amp;nbsp;&lt;wbr&gt;document&amp;nbsp;&lt;wbr&gt;compatibility&amp;nbsp;&lt;wbr&gt;mode.&lt;/span&gt;&lt;span style="color: #008000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;}&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;wbr&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;wbr&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;认识内容属性值&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;内容属性值在接收到异于先前叙述的数值时是具有弹性的。这能使你对于IE如何显示你的网页更有操控性。举例来说，你可以设定内容属性值为IE=7.5。当你这样做的时候，IE尝试将这个值转换为&lt;a href="http://msdn.microsoft.com/en-us/library/ms537512(VS.85).aspx" style="color: #78afd3; text-decoration: underline; "&gt;version vector&lt;/a&gt;并选择最接近的结果。在这个例子中，IE会将其设定为IE7 mode。下面的范例显示该模式设定为其他值的状况。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;wbr&gt;&lt;/p&gt;&lt;div style="font-family: verdana; word-wrap: break-word; "&gt;&lt;span style="color: #0000ff; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;meta&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #ff0000; "&gt;http-equiv&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;="X-UA-Compatible"&lt;/span&gt;&lt;span style="color: #ff0000; "&gt;&amp;nbsp;&lt;wbr&gt;content&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;="IE=4"&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #008000; "&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000; "&gt;&amp;nbsp;&lt;wbr&gt;IE5&amp;nbsp;&lt;wbr&gt;mode&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #008000; "&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;meta&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #ff0000; "&gt;http-equiv&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;="X-UA-Compatible"&lt;/span&gt;&lt;span style="color: #ff0000; "&gt;&amp;nbsp;&lt;wbr&gt;content&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;="IE=7.5"&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #008000; "&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000; "&gt;&amp;nbsp;&lt;wbr&gt;IE7&amp;nbsp;&lt;wbr&gt;mode&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #008000; "&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;meta&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #ff0000; "&gt;http-equiv&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;="X-UA-Compatible"&lt;/span&gt;&lt;span style="color: #ff0000; "&gt;&amp;nbsp;&lt;wbr&gt;content&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;="IE=100"&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #008000; "&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000; "&gt;&amp;nbsp;&lt;wbr&gt;IE8&amp;nbsp;&lt;wbr&gt;mode&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #008000; "&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;meta&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #ff0000; "&gt;http-equiv&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;="X-UA-Compatible"&lt;/span&gt;&lt;span style="color: #ff0000; "&gt;&amp;nbsp;&lt;wbr&gt;content&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;="IE=a"&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #008000; "&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000; "&gt;&amp;nbsp;&lt;wbr&gt;IE5&amp;nbsp;&lt;wbr&gt;mode&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #008000; "&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;nbsp;&lt;wbr&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000; "&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000; "&gt;&amp;nbsp;&lt;wbr&gt;This&amp;nbsp;&lt;wbr&gt;header&amp;nbsp;&lt;wbr&gt;mimics&amp;nbsp;&lt;wbr&gt;Internet&amp;nbsp;&lt;wbr&gt;Explorer&amp;nbsp;&lt;wbr&gt;7&amp;nbsp;&lt;wbr&gt;and&amp;nbsp;&lt;wbr&gt;uses&amp;nbsp;&lt;wbr&gt;&lt;br /&gt;&amp;lt;!DOCTYPE&amp;gt;&amp;nbsp;&lt;wbr&gt;to&amp;nbsp;&lt;wbr&gt;determine&amp;nbsp;&lt;wbr&gt;how&amp;nbsp;&lt;wbr&gt;to&amp;nbsp;&lt;wbr&gt;display&amp;nbsp;&lt;wbr&gt;the&amp;nbsp;&lt;wbr&gt;Web&amp;nbsp;&lt;wbr&gt;page&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #008000; "&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;meta&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #ff0000; "&gt;http-equiv&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;="X-UA-Compatible"&lt;/span&gt;&lt;span style="color: #ff0000; "&gt;&amp;nbsp;&lt;wbr&gt;content&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;="IE=EmulateIE7"&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;注意:&lt;/strong&gt;&amp;nbsp;前面的范例显示单独的内容值。实际上IE只会执行网页中第一个X-UA-Compatible标头。&lt;/p&gt;&lt;p&gt;你也可以使用内容属性来指定复数的文件兼容性模式，这能帮助确保你的网页在未来的浏览器版本都能一致的显示。欲设定复数的文件模式，请设定内容属性以判别你想使用的模式。使用分号来分开各个模式。&lt;/p&gt;&lt;p&gt;如果一个特定版本的IE支持所要求的兼容性模式多于一种，将採用列于标头内容属性中最高的可用模式。你可以使用这个特性来排除特定的兼容性模式，虽然并不推荐这样做。举例来说，下列标头即会排除IE7 mode。&lt;/p&gt;&lt;div style="font-family: verdana; word-wrap: break-word; "&gt;&lt;span style="color: #0000ff; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;meta&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #ff0000; "&gt;http-equiv&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;="X-UA-Compatible"&lt;/span&gt;&lt;span style="color: #ff0000; "&gt;&amp;nbsp;&lt;wbr&gt;content&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;="IE=5;&amp;nbsp;&lt;wbr&gt;IE=8"&lt;/span&gt;&lt;span style="color: #ff0000; "&gt;&amp;nbsp;&lt;wbr&gt;&lt;/span&gt;&lt;span style="color: #0000ff; "&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;wbr&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;wbr&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt; "&gt;结论&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;兼容性对于网页设计师来说是非常重要的顾虑。虽然最好是可以建立一个完全不需依赖任何网页浏览器特性或功能的网站，有时候这是不可能实现的。文件兼容性模式便能将网页限制在某个特定版本的IE中。&lt;/p&gt;&lt;p&gt;使用X-UA-Compatible标头来指定你的页面支持的IE版本。使用&lt;strong&gt;document.documentMode&lt;/strong&gt;判定页面的兼容性模式。&lt;/p&gt;选择支持某个特定版本的IE，你可以确保你的页面在未来的浏览器版本中也能有显示的一致&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;转自 ：&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: verdana; background-color: #ffffff; "&gt;&lt;a href="http://www.cnblogs.com/qqflying/archive/2010/11/29/1891330.html"&gt;http://www.cnblogs.com/qqflying/archive/2010/11/29/1891330.html&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: verdana; background-color: #ffffff; "&gt;&lt;div style="font-family: verdana; word-wrap: break-word; "&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;/span&gt;&lt;img src="http://www.cnblogs.com/eoiioe/aggbug/2123436.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/eoiioe/archive/2011/08/01/2123436.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/eoiioe/archive/2011/07/29/2121078.html</id><title type="text">JS高级拖动技术--- setCapture ，releaseCapture</title><summary type="text">&lt;script type="text/javascript"&gt;&lt;!--window.onload=function(){ objDiv = document.getElementById('drag'); drag(objDiv);};function drag(dv){ dv.onmousedown=function(e){var d=document;e = e ||window.event; var x= e.layerX || e.offsetX;var y= e.layerY || e.offsetY;//设置捕获范围if(dv.</summary><published>2011-07-29T07:23:00Z</published><updated>2011-07-29T07:23:00Z</updated><author><name>eoiioe</name><uri>http://www.cnblogs.com/eoiioe/</uri></author><link rel="alternate" href="http://www.cnblogs.com/eoiioe/archive/2011/07/29/2121078.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eoiioe/archive/2011/07/29/2121078.html"/><content type="html">&lt;span class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "&gt;&lt;p&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;&amp;lt;!--&lt;br /&gt;window.onload=function(){&lt;br /&gt;&amp;nbsp; objDiv = document.getElementById('drag');&lt;br /&gt;&amp;nbsp; drag(objDiv);&lt;br /&gt;};&lt;/p&gt;&lt;p&gt;function drag(dv){&lt;br /&gt;&amp;nbsp; dv.onmousedown=function(e){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var d=&lt;span style="line-height: 1.5; color: #993300; "&gt;document&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e = e ||&amp;nbsp;&lt;span style="line-height: 1.5; color: #993300; "&gt;window.event&lt;/span&gt;;&lt;br /&gt;&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; var x= e.layerX || e.offsetX;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var y= e.layerY || e.offsetY;&lt;br /&gt;&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;&lt;span style="line-height: 1.5; color: #008000; "&gt;//设置捕获范围&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(&lt;span style="line-height: 1.5; color: #993300; "&gt;dv&lt;/span&gt;.&lt;span style="line-height: 1.5; color: #0000ff; "&gt;setCapture&lt;/span&gt;){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="line-height: 1.5; color: #993300; "&gt;dv&lt;/span&gt;.&lt;span style="line-height: 1.5; color: #0000ff; "&gt;setCapture();&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}else if(&lt;span style="line-height: 1.5; color: #993300; "&gt;window&lt;/span&gt;.&lt;span style="line-height: 1.5; color: #0000ff; "&gt;captureEvents&lt;/span&gt;){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="line-height: 1.5; color: #993300; "&gt;window&lt;/span&gt;.&lt;span style="line-height: 1.5; color: #0000ff; "&gt;captureEvents(&lt;span style="line-height: 1.5; color: #008000; "&gt;Event.MOUSEMOVE&amp;nbsp;&lt;/span&gt;|&amp;nbsp;&lt;span style="line-height: 1.5; color: #008000; "&gt;Event.MOUSEUP&lt;/span&gt;);&lt;/span&gt;&lt;br /&gt;&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;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d.onmousemove=function(e){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e= e || window.event;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!e.pageX)e.pageX=e.clientX;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!e.pageY)e.pageY=e.clientY;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var tx=e.pageX-x;&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;var ty=e.pageY-y;&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;&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;dv.style.left=tx;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dv.style.top=ty;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d.onmouseup=function(){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="line-height: 1.5; color: #008000; "&gt;//取消捕获范围&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(dv.&lt;span style="line-height: 1.5; color: #0000ff; "&gt;releaseCapture&lt;/span&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; dv.&lt;span style="line-height: 1.5; color: #0000ff; "&gt;releaseCapture();&lt;/span&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;}else if(window.captureEvents){&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; window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);&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;}&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;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="line-height: 1.5; color: #008000; "&gt;//清除事件&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;d.onmousemove=null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d.onmouseup=null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;}&lt;br /&gt;//--&amp;gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div id="drag" style="position:absolute;left:12px;top:24px;width:100;height:150;border:1px solid #000000;z-index:1;background:#eeeeee"&amp;gt;drag me&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--------------------------------------&lt;br /&gt;&lt;strong&gt;setCapture&lt;/strong&gt;&amp;nbsp;的意思就是设置一个对象的方法&lt;span style="line-height: 1.5; background-color: #eeeeee; "&gt;&lt;strong&gt;被触发的范围&lt;/strong&gt;&lt;/span&gt;，或者作用域。&lt;br /&gt;如果不设置，则div只在当前窗口内被触发。如果设置，则在整个浏览器范围内被触发，也就是可以拖到浏览器外面&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "&gt;&lt;p&gt;转自：&lt;/p&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "&gt;&lt;a href="http://www.cnblogs.com/Godblessyou/archive/2008/05/14/1196746.html"&gt;http://www.cnblogs.com/Godblessyou/archive/2008/05/14/1196746.html&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/span&gt;&lt;img src="http://www.cnblogs.com/eoiioe/aggbug/2121078.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/eoiioe/archive/2011/07/29/2121078.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/eoiioe/archive/2011/05/14/2046041.html</id><title type="text">转：浅说泛函与函数变换</title><summary type="text">这里转一篇09年月影的关于泛函及函数变换的文章，很好的学习资料，着实学习了一下Javascript语言的灵巧强大之处。 浅说泛函与函数变换JavaScript是函数第一型(first calss)的语言，JavaScript函数具有两重含义：它既能作为过程调用，又是一个对象。函数本身的可操作性带来了函数变换的设计思想。函数变换和泛函有关泛函的概念这里借用数学的概念，简单来说，泛函就是定义域是一个函数，而值域是一个函数，推广开来， 泛函就是从任意的向量空间到标量的映射。泛函也是一种“函数”，它的独立变量一般不是通常函数的“自变量”，而是通常函数本身。泛函是函数的函数。泛函的英文是 Functio</summary><published>2011-05-13T23:19:00Z</published><updated>2011-05-13T23:19:00Z</updated><author><name>eoiioe</name><uri>http://www.cnblogs.com/eoiioe/</uri></author><link rel="alternate" href="http://www.cnblogs.com/eoiioe/archive/2011/05/14/2046041.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eoiioe/archive/2011/05/14/2046041.html"/><content type="html">&lt;p&gt;&lt;span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium Simsun; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"&gt;&lt;span style="font-family: Tahoma, Verdana; color: rgb(51,51,51); font-size: 12px" class="Apple-style-span"&gt;这里转一篇09年月影的关于泛函及函数变换的文章，很好的学习资料，着实学习了一下Javascript语言的灵巧强大之处。 &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium Simsun; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"&gt;&lt;span style="font-family: Tahoma, Verdana; color: rgb(51,51,51); font-size: 12px" class="Apple-style-span"&gt;&amp;nbsp;&lt;/p&gt;&lt;table style="overflow-x: hidden; overflow-y: hidden; background-color: rgb(255,255,255); width: 851px; border-collapse: separate !important; font: 12px Tahoma, Verdana; word-wrap: break-word; empty-cells: show; table-layout: fixed; height: 4203px; color: rgb(51,51,51); background-origin: initial; background-clip: initial" class="t_msg" border="0" cellspacing="0" cellpadding="4"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="padding-bottom: 2px; padding-left: 10px; width: 849px; padding-right: 10px; height: 4201px; border-top: rgb(187,233,255) 1px solid; padding-top: 10px" class="line" valign="top"&gt;&lt;span style="font-weight: bold" class="bold"&gt;浅说泛函与函数变换&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-size: 12px" id="message596738" class="t_msgfont"&gt;JavaScript是函数第一型(first calss)的语言，JavaScript函数具有两重含义：它既能作为过程调用，又是一个对象。函数本身的可操作性带来了函数变换的设计思想。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;函数变换和泛函&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="color: rgb(21,75,160); text-decoration: none" href="http://baike.baidu.com/view/523281.htm" target="_blank"&gt;有关泛函的概念&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;这里借用数学的概念，简单来说，泛函就是定义域是一个函数，而值域是一个函数，推广开来， 泛函就是从任意的向量空间到标量的映射。&lt;br /&gt;泛函也是一种&amp;#8220;函数&amp;#8221;，它的独立变量一般不是通常函数的&amp;#8220;自变量&amp;#8221;，而是通常函数本身。泛函是函数的函数。&lt;br /&gt;泛函的英文是 Functional， 所以也可以把函数式编程(Functional Programming)称为泛函编程（对应在函数式编程中也把泛函称为高阶函数(higher-order function) (HOF)的）。&lt;br /&gt;对JavaScript来说，一个泛函是用来完成一个函数变换的函数。由于变换的结构依然是一个JavaScript函数，所以对于JavaScript来说泛函的值域和定义域是相同的，这意味着泛函变换是可以&lt;strong&gt;迭代&lt;/strong&gt;的。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;利用泛函来进行函数变换&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;这个思路其实就是通过对函数执行某种泛函过程，把这个函数的输入和输出变为所需要的输入和输出。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;使用泛函的好处&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;假如说在一个过程a之后接着要执行一个过程b，并且a和b的执行参数是相同的，用普通的模式来实现如下：&lt;br /&gt;&lt;br /&gt;&lt;div style="border-bottom: rgb(222,222,184) 1px solid; border-left: rgb(222,222,184) 1px solid; padding-bottom: 5px; background-color: rgb(243,248,215); margin: 0px 1em; padding-left: 5px; padding-right: 5px; color: rgb(0,0,0); border-top: rgb(222,222,184) 1px solid; font-weight: bold; border-right: rgb(222,222,184) 1px solid; padding-top: 5px; background-origin: initial; background-clip: initial" class="msgheader"&gt;&lt;div style="text-align: right; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; float: right; padding-top: 0px" class="right"&gt;&lt;a style="font: 12px Arial, Tahoma; color: rgb(21,75,160); text-decoration: none" class="smalltxt" onclick="copyCode($('phpcode0'));" href="http://bbs.51js.com/viewthread.php?tid=85538###"&gt;[复制]&lt;/a&gt;&lt;/div&gt;Code:&lt;/div&gt;&lt;div style="border-bottom: rgb(222,222,184) 1px solid; border-left: rgb(222,222,184) 1px solid; padding-bottom: 10px; overflow-x: hidden; overflow-y: hidden; background-color: rgb(253,255,242); margin: 0px 1em; padding-left: 10px; width: auto !important; padding-right: 10px; word-wrap: break-word; border-top-width: 0px; border-right: rgb(222,222,184) 1px solid; padding-top: 10px; background-origin: initial; background-clip: initial" id="phpcode0" class="msgborder"&gt;&lt;code&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;&lt;span style="color: rgb(0,0,187)"&gt;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;function&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;f&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&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,0,187)"&gt;a&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;apply&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;arguments&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&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,0,187)"&gt;b&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;apply&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;arguments&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;但是问题来了，如果另一个应用里，过程a之后接着要执行一个过程c，那么：&lt;br /&gt;&lt;br /&gt;&lt;div style="border-bottom: rgb(222,222,184) 1px solid; border-left: rgb(222,222,184) 1px solid; padding-bottom: 5px; background-color: rgb(243,248,215); margin: 0px 1em; padding-left: 5px; padding-right: 5px; color: rgb(0,0,0); border-top: rgb(222,222,184) 1px solid; font-weight: bold; border-right: rgb(222,222,184) 1px solid; padding-top: 5px; background-origin: initial; background-clip: initial" class="msgheader"&gt;&lt;div style="text-align: right; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; float: right; padding-top: 0px" class="right"&gt;&lt;a style="font: 12px Arial, Tahoma; color: rgb(21,75,160); text-decoration: none" class="smalltxt" onclick="copyCode($('phpcode1'));" href="http://bbs.51js.com/viewthread.php?tid=85538###"&gt;[复制]&lt;/a&gt;&lt;/div&gt;Code:&lt;/div&gt;&lt;div style="border-bottom: rgb(222,222,184) 1px solid; border-left: rgb(222,222,184) 1px solid; padding-bottom: 10px; overflow-x: hidden; overflow-y: hidden; background-color: rgb(253,255,242); margin: 0px 1em; padding-left: 10px; width: auto !important; padding-right: 10px; word-wrap: break-word; border-top-width: 0px; border-right: rgb(222,222,184) 1px solid; padding-top: 10px; background-origin: initial; background-clip: initial" id="phpcode1" class="msgborder"&gt;&lt;code&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;&lt;span style="color: rgb(0,0,187)"&gt;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;function&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;f2&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&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,0,187)"&gt;a&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;apply&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;arguments&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&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,0,187)"&gt;c&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;apply&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;arguments&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;有没有办法把这个过程合二为一呢？答案是有的：&lt;br /&gt;&lt;br /&gt;&lt;div style="border-bottom: rgb(222,222,184) 1px solid; border-left: rgb(222,222,184) 1px solid; padding-bottom: 5px; background-color: rgb(243,248,215); margin: 0px 1em; padding-left: 5px; padding-right: 5px; color: rgb(0,0,0); border-top: rgb(222,222,184) 1px solid; font-weight: bold; border-right: rgb(222,222,184) 1px solid; padding-top: 5px; background-origin: initial; background-clip: initial" class="msgheader"&gt;&lt;div style="text-align: right; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; float: right; padding-top: 0px" class="right"&gt;&lt;a style="font: 12px Arial, Tahoma; color: rgb(21,75,160); text-decoration: none" class="smalltxt" onclick="copyCode($('phpcode2'));" href="http://bbs.51js.com/viewthread.php?tid=85538###"&gt;[复制]&lt;/a&gt;&lt;/div&gt;Code:&lt;/div&gt;&lt;div style="border-bottom: rgb(222,222,184) 1px solid; border-left: rgb(222,222,184) 1px solid; padding-bottom: 10px; overflow-x: hidden; overflow-y: hidden; background-color: rgb(253,255,242); margin: 0px 1em; padding-left: 10px; width: auto !important; padding-right: 10px; word-wrap: break-word; border-top-width: 0px; border-right: rgb(222,222,184) 1px solid; padding-top: 10px; background-origin: initial; background-clip: initial" id="phpcode2" class="msgborder"&gt;&lt;code&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;&lt;span style="color: rgb(0,0,187)"&gt;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;function&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;comb&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;f1&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;f2&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;function(){&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,187)"&gt;f1&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;apply&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;arguments&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;),&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;f2&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;apply&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;arguments&lt;/span&gt;&lt;span style="color: rgb(0,119,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;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;f&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;comb&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;a&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;b&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;f2&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;comb&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;a&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;c&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;);&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;在这里comb就是一个最基本的&amp;#8220;泛函&amp;#8221;，它返回将两个函数先后执行的函数，或者也可以看成它对两个函数作了一个&amp;#8220;加法变换&amp;#8221;： comb: f=f1+f2&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;设计实用的函数变换&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;函数变换是一种特殊的泛函，它是&lt;strong&gt;以某个函数为中心&lt;/strong&gt;的泛函过程。&lt;br /&gt;通常来说，我们认为函数变换产生新的函数，但是，如果你把JavaScript函数看作一个具有输入和输出的元件的话，那么函数变换产生的结果可以看成是&lt;strong&gt;改变函数的输入或输出&lt;/strong&gt;。&lt;br /&gt;在这里，我们为了简单化设计，把函数变换分成改变输入和改变输出两类，并把这两类变换称为&lt;strong&gt;基本变换&lt;/strong&gt;，前面说过函数变换是可以迭代的，所以同时改变输入和输出的函数变换可以通过基本变换组合产生。&lt;br /&gt;&lt;br /&gt;接下来，我们主要考虑函数基本变换形式。我通过事件模型来建立基本变换（其实用事件模型不是必须的，只是这么做理解起来稍微简单些）：&lt;br /&gt;&lt;br /&gt;&lt;div style="border-bottom: rgb(222,222,184) 1px solid; border-left: rgb(222,222,184) 1px solid; padding-bottom: 5px; background-color: rgb(243,248,215); margin: 0px 1em; padding-left: 5px; padding-right: 5px; color: rgb(0,0,0); border-top: rgb(222,222,184) 1px solid; font-weight: bold; border-right: rgb(222,222,184) 1px solid; padding-top: 5px; background-origin: initial; background-clip: initial" class="msgheader"&gt;&lt;div style="text-align: right; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; float: right; padding-top: 0px" class="right"&gt;&lt;a style="font: 12px Arial, Tahoma; color: rgb(21,75,160); text-decoration: none" class="smalltxt" onclick="copyCode($('phpcode3'));" href="http://bbs.51js.com/viewthread.php?tid=85538###"&gt;[复制]&lt;/a&gt;&lt;/div&gt;Code:&lt;/div&gt;&lt;div style="border-bottom: rgb(222,222,184) 1px solid; border-left: rgb(222,222,184) 1px solid; padding-bottom: 10px; overflow-x: hidden; overflow-y: hidden; background-color: rgb(253,255,242); margin: 0px 1em; padding-left: 10px; width: auto !important; padding-right: 10px; word-wrap: break-word; border-top-width: 0px; border-right: rgb(222,222,184) 1px solid; padding-top: 10px; background-origin: initial; background-clip: initial" id="phpcode3" class="msgborder"&gt;&lt;code&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;&lt;span style="color: rgb(0,0,187)"&gt;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;function&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;on&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;func&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;type&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;handler&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;function(){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;evtArgs&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;=&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,187)"&gt;args&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;:[].&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;slice&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;call&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;arguments&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;),&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,187)"&gt;type&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;type&lt;/span&gt;&lt;span style="color: rgb(0,119,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,187)"&gt;owner&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0,119,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,187)"&gt;returnValue&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;null&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&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,187)"&gt;target&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;func&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&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,187)"&gt;preventDefault&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;:&amp;nbsp;function(){&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,187)"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;target&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;null&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,119,0)"&gt;}&lt;br /&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(221,0,0)"&gt;"before"&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;==&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;type&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;&amp;amp;&amp;amp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;handler&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;call&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;evtArgs&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;owner&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;evtArgs&lt;/span&gt;&lt;span style="color: rgb(0,119,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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;evtArgs&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;target&lt;/span&gt;&lt;span style="color: rgb(0,119,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,187)"&gt;evtArgs&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;returnValue&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;evtArgs&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;target&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;apply&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;evtArgs&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;owner&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;evtArgs&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;args&lt;/span&gt;&lt;span style="color: rgb(0,119,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(221,0,0)"&gt;"after"&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;==&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;type&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;&amp;amp;&amp;amp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;handler&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;call&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;evtArgs&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;owner&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;evtArgs&lt;/span&gt;&lt;span style="color: rgb(0,119,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;return&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;evtArgs&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;returnValue&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;on&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;fn&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(221,0,0)"&gt;"before"&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;function(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;evt&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;){&lt;/span&gt;&lt;span style="color: rgb(255,128,0)"&gt;/*在这里你可以改变输入参数*/&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;});&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;on&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;fn&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(221,0,0)"&gt;"after"&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;function(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;evt&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;){&lt;/span&gt;&lt;span style="color: rgb(255,128,0)"&gt;/*在这里你可以改变返回值*/&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;});&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;OK，现在我们有了第一个泛函，我在这个泛函里给函数本身增加了两个事件，在这两个事件里通过操作事件参数可以改变函数的输入参数和返回值。&lt;br /&gt;&lt;br /&gt;现在我要先做一件事情，就是把这个泛函（它本身也是函数）给变换到Function的prototype上去：&lt;br /&gt;&lt;br /&gt;&lt;div style="border-bottom: rgb(222,222,184) 1px solid; border-left: rgb(222,222,184) 1px solid; padding-bottom: 5px; background-color: rgb(243,248,215); margin: 0px 1em; padding-left: 5px; padding-right: 5px; color: rgb(0,0,0); border-top: rgb(222,222,184) 1px solid; font-weight: bold; border-right: rgb(222,222,184) 1px solid; padding-top: 5px; background-origin: initial; background-clip: initial" class="msgheader"&gt;&lt;div style="text-align: right; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; float: right; padding-top: 0px" class="right"&gt;&lt;a style="font: 12px Arial, Tahoma; color: rgb(21,75,160); text-decoration: none" class="smalltxt" onclick="copyCode($('phpcode4'));" href="http://bbs.51js.com/viewthread.php?tid=85538###"&gt;[复制]&lt;/a&gt;&lt;/div&gt;Code:&lt;/div&gt;&lt;div style="border-bottom: rgb(222,222,184) 1px solid; border-left: rgb(222,222,184) 1px solid; padding-bottom: 10px; overflow-x: hidden; overflow-y: hidden; background-color: rgb(253,255,242); margin: 0px 1em; padding-left: 10px; width: auto !important; padding-right: 10px; word-wrap: break-word; border-top-width: 0px; border-right: rgb(222,222,184) 1px solid; padding-top: 10px; background-origin: initial; background-clip: initial" id="phpcode4" class="msgborder"&gt;&lt;code&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;&lt;span style="color: rgb(0,0,187)"&gt;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;function&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;methodize&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;fn&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;on&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;fn&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(221,0,0)"&gt;"before"&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;function(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;evt&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&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,0,187)"&gt;evt&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;args&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;unshift&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;evt&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;owner&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&lt;br /&gt;}&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;所以methodize是我们的第二个泛函。有了它，可以做如下的事情：&lt;br /&gt;&lt;br /&gt;&lt;div style="border-bottom: rgb(222,222,184) 1px solid; border-left: rgb(222,222,184) 1px solid; padding-bottom: 5px; background-color: rgb(243,248,215); margin: 0px 1em; padding-left: 5px; padding-right: 5px; color: rgb(0,0,0); border-top: rgb(222,222,184) 1px solid; font-weight: bold; border-right: rgb(222,222,184) 1px solid; padding-top: 5px; background-origin: initial; background-clip: initial" class="msgheader"&gt;&lt;div style="text-align: right; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; float: right; padding-top: 0px" class="right"&gt;&lt;a style="font: 12px Arial, Tahoma; color: rgb(21,75,160); text-decoration: none" class="smalltxt" onclick="copyCode($('phpcode5'));" href="http://bbs.51js.com/viewthread.php?tid=85538###"&gt;[复制]&lt;/a&gt;&lt;/div&gt;Code:&lt;/div&gt;&lt;div style="border-bottom: rgb(222,222,184) 1px solid; border-left: rgb(222,222,184) 1px solid; padding-bottom: 10px; overflow-x: hidden; overflow-y: hidden; background-color: rgb(253,255,242); margin: 0px 1em; padding-left: 10px; width: auto !important; padding-right: 10px; word-wrap: break-word; border-top-width: 0px; border-right: rgb(222,222,184) 1px solid; padding-top: 10px; background-origin: initial; background-clip: initial" id="phpcode5" class="msgborder"&gt;&lt;code&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;&lt;span style="color: rgb(0,0,187)"&gt;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;Function.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;prototype&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;methodize&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;methodize&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;methodize&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;);&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)"&gt;//先methodize自己^_^&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;Function.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;prototype&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;on&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;on&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;methodize&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;();&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;OK，现在泛函更加易于使用了，目前我们用到了on-before，还没有用到on-after，但是我觉得传before、after的参数显得太麻烦，因此我再写第三个泛函：&lt;br /&gt;&lt;br /&gt;&lt;div style="border-bottom: rgb(222,222,184) 1px solid; border-left: rgb(222,222,184) 1px solid; padding-bottom: 5px; background-color: rgb(243,248,215); margin: 0px 1em; padding-left: 5px; padding-right: 5px; color: rgb(0,0,0); border-top: rgb(222,222,184) 1px solid; font-weight: bold; border-right: rgb(222,222,184) 1px solid; padding-top: 5px; background-origin: initial; background-clip: initial" class="msgheader"&gt;&lt;div style="text-align: right; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; float: right; padding-top: 0px" class="right"&gt;&lt;a style="font: 12px Arial, Tahoma; color: rgb(21,75,160); text-decoration: none" class="smalltxt" onclick="copyCode($('phpcode6'));" href="http://bbs.51js.com/viewthread.php?tid=85538###"&gt;[复制]&lt;/a&gt;&lt;/div&gt;Code:&lt;/div&gt;&lt;div style="border-bottom: rgb(222,222,184) 1px solid; border-left: rgb(222,222,184) 1px solid; padding-bottom: 10px; overflow-x: hidden; overflow-y: hidden; background-color: rgb(253,255,242); margin: 0px 1em; padding-left: 10px; width: auto !important; padding-right: 10px; word-wrap: break-word; border-top-width: 0px; border-right: rgb(222,222,184) 1px solid; padding-top: 10px; background-origin: initial; background-clip: initial" id="phpcode6" class="msgborder"&gt;&lt;code&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;&lt;span style="color: rgb(0,0,187)"&gt;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;function&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;curry&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;fn&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;curryArgs&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;fn&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;on&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221,0,0)"&gt;"before"&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,function(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;evt&lt;/span&gt;&lt;span style="color: rgb(0,119,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;var&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;args&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;=&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;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;for(var&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;len&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;curryArgs&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;length&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;&amp;lt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;len&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;i&lt;/span&gt;&lt;span style="color: rgb(0,119,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;if(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;i&amp;nbsp;in&amp;nbsp;curryArgs&lt;/span&gt;&lt;span style="color: rgb(0,119,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;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;args&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;push&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;curryArgs&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;i&lt;/span&gt;&lt;span style="color: rgb(0,119,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;}else{&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;if(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;evt&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;args&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;length&lt;/span&gt;&lt;span style="color: rgb(0,119,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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;args&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;push&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;evt&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;args&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;shift&lt;/span&gt;&lt;span style="color: rgb(0,119,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;}&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;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,187)"&gt;evt&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;args&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;args&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;concat&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;evt&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;args&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&lt;br /&gt;}&amp;nbsp;&lt;br /&gt;Function.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;prototype&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;curry&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;curry&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;methodize&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;();&lt;br /&gt;Function.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;prototype&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;before&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;on&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;curry&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;([,&lt;/span&gt;&lt;span style="color: rgb(221,0,0)"&gt;"before"&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;]).&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;methodize&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)"&gt;//注意到这里的curry和methodize其实可以互换，但是需要改变curry的参数&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;Function.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;prototype&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;after&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;on&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;curry&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;([,&lt;/span&gt;&lt;span style="color: rgb(221,0,0)"&gt;"after"&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;]).&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;methodize&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;();&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;curry这个泛函进行了&lt;strong&gt;将默认参数先赋予指定函数&lt;/strong&gt;的一个变换。到目前为止我们的变换仅限于改变参数（通过on-before），那么改变返回值有什么用呢？&lt;br /&gt;&lt;br /&gt;简单举一个例子，事实上，我们可以尝试着为一般函数建立一个归约(reduce)规则：&lt;br /&gt;&lt;br /&gt;&lt;div style="border-bottom: rgb(222,222,184) 1px solid; border-left: rgb(222,222,184) 1px solid; padding-bottom: 5px; background-color: rgb(243,248,215); margin: 0px 1em; padding-left: 5px; padding-right: 5px; color: rgb(0,0,0); border-top: rgb(222,222,184) 1px solid; font-weight: bold; border-right: rgb(222,222,184) 1px solid; padding-top: 5px; background-origin: initial; background-clip: initial" class="msgheader"&gt;&lt;div style="text-align: right; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; float: right; padding-top: 0px" class="right"&gt;&lt;a style="font: 12px Arial, Tahoma; color: rgb(21,75,160); text-decoration: none" class="smalltxt" onclick="copyCode($('phpcode7'));" href="http://bbs.51js.com/viewthread.php?tid=85538###"&gt;[复制]&lt;/a&gt;&lt;/div&gt;Code:&lt;/div&gt;&lt;div style="border-bottom: rgb(222,222,184) 1px solid; border-left: rgb(222,222,184) 1px solid; padding-bottom: 10px; overflow-x: hidden; overflow-y: hidden; background-color: rgb(253,255,242); margin: 0px 1em; padding-left: 10px; width: auto !important; padding-right: 10px; word-wrap: break-word; border-top-width: 0px; border-right: rgb(222,222,184) 1px solid; padding-top: 10px; background-origin: initial; background-clip: initial" id="phpcode7" class="msgborder"&gt;&lt;code&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;&lt;span style="color: rgb(0,0,187)"&gt;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;function&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;reduce&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;fn&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;fn&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;after&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(function(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;evt&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;args&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;evt&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;args&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;slice&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;evt&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;target&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;length&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;args&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;length&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0,119,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;if(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;evt&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;returnValue&lt;/span&gt;&lt;span style="color: rgb(0,119,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;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;args&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;unshift&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;evt&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;returnValue&lt;/span&gt;&lt;span style="color: rgb(0,119,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,187)"&gt;evt&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;returnValue&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;reduce&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;evt&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;target&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;).&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;apply&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;evt&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;owner&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;args&lt;/span&gt;&lt;span style="color: rgb(0,119,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;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;泛函reduce将函数按参数进行&lt;strong&gt;归约&lt;/strong&gt;，例如：&lt;br /&gt;&lt;br /&gt;&lt;div style="border-bottom: rgb(222,222,184) 1px solid; border-left: rgb(222,222,184) 1px solid; padding-bottom: 5px; background-color: rgb(243,248,215); margin: 0px 1em; padding-left: 5px; padding-right: 5px; color: rgb(0,0,0); border-top: rgb(222,222,184) 1px solid; font-weight: bold; border-right: rgb(222,222,184) 1px solid; padding-top: 5px; background-origin: initial; background-clip: initial" class="msgheader"&gt;&lt;div style="text-align: right; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; float: right; padding-top: 0px" class="right"&gt;&lt;a style="font: 12px Arial, Tahoma; color: rgb(21,75,160); text-decoration: none" class="smalltxt" onclick="copyCode($('phpcode8'));" href="http://bbs.51js.com/viewthread.php?tid=85538###"&gt;[复制]&lt;/a&gt;&lt;/div&gt;Code:&lt;/div&gt;&lt;div style="border-bottom: rgb(222,222,184) 1px solid; border-left: rgb(222,222,184) 1px solid; padding-bottom: 10px; overflow-x: hidden; overflow-y: hidden; background-color: rgb(253,255,242); margin: 0px 1em; padding-left: 10px; width: auto !important; padding-right: 10px; word-wrap: break-word; border-top-width: 0px; border-right: rgb(222,222,184) 1px solid; padding-top: 10px; background-origin: initial; background-clip: initial" id="phpcode8" class="msgborder"&gt;&lt;code&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;&lt;span style="color: rgb(0,0,187)"&gt;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;var&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;add&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;=&amp;nbsp;function(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;x&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;y&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;x&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;y&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;;&lt;br /&gt;}.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;reduce&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;alert&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;add&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;2&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;3&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;4&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;));&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)"&gt;//得到10&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;事实上，除了reduce之外，我们还可以将函数变换作用于需要&lt;strong&gt;链式&lt;/strong&gt;调用的场合，所谓链式调用即形如o.a().b().c().d()...的形式，一般来说要实现链式调用有两种情况，一种是函数自身的返回值进行包装后支持链式调用，一种是改变函数的返回值将函数的第一个参数包装后返回，无论怎样的情况，链式调用都能用基本函数变换来实现，这里就不列举了。&lt;br /&gt;&lt;br /&gt;前面我们简单用on-before、on-after实现了多个基本函数变换，事实上，函数变换还有更复杂的形式，现在我们写一个稍稍复杂的函数变换&amp;#8212;&amp;#8212;multi&lt;br /&gt;&lt;br /&gt;&lt;div style="border-bottom: rgb(222,222,184) 1px solid; border-left: rgb(222,222,184) 1px solid; padding-bottom: 5px; background-color: rgb(243,248,215); margin: 0px 1em; padding-left: 5px; padding-right: 5px; color: rgb(0,0,0); border-top: rgb(222,222,184) 1px solid; font-weight: bold; border-right: rgb(222,222,184) 1px solid; padding-top: 5px; background-origin: initial; background-clip: initial" class="msgheader"&gt;&lt;div style="text-align: right; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; float: right; padding-top: 0px" class="right"&gt;&lt;a style="font: 12px Arial, Tahoma; color: rgb(21,75,160); text-decoration: none" class="smalltxt" onclick="copyCode($('phpcode9'));" href="http://bbs.51js.com/viewthread.php?tid=85538###"&gt;[复制]&lt;/a&gt;&lt;/div&gt;Code:&lt;/div&gt;&lt;div style="border-bottom: rgb(222,222,184) 1px solid; border-left: rgb(222,222,184) 1px solid; padding-bottom: 10px; overflow-x: hidden; overflow-y: hidden; background-color: rgb(253,255,242); margin: 0px 1em; padding-left: 10px; width: auto !important; padding-right: 10px; word-wrap: break-word; border-top-width: 0px; border-right: rgb(222,222,184) 1px solid; padding-top: 10px; background-origin: initial; background-clip: initial" id="phpcode9" class="msgborder"&gt;&lt;code&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;&lt;span style="color: rgb(0,0,187)"&gt;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;function&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;multi&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;func&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;function(){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;list&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;arguments&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(list&amp;nbsp;instanceof&amp;nbsp;Array){&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;var&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;ret&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;=&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;var&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;moreArgs&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;=&amp;nbsp;[].&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;slice&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;call&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;arguments&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0,119,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;for(var&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;len&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;=&amp;nbsp;list.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;length&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;&amp;lt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;len&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;i&lt;/span&gt;&lt;span style="color: rgb(0,119,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;var&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;r&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;func&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;apply&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;[list[&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;i&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;]].&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;concat&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;moreArgs&lt;/span&gt;&lt;span style="color: rgb(0,119,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;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;ret&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;push&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;r&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;);&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;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;return&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;ret&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}else{&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;return&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;func&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;apply&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;arguments&lt;/span&gt;&lt;span style="color: rgb(0,119,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;}&lt;br /&gt;Function.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;prototype&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;multi&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;multi&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;methodize&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;();&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;这个变换将第一个参数的list给函数依次执行，执行结果也作为列表返回。这个变换本身其实不是一个基本变换，它既改变了参数（虽然仅仅是类型发生变化），又改变了返回值，而且实际上这个变换执行的是函数的重复迭代。&lt;br /&gt;&lt;br /&gt;&lt;div style="border-bottom: rgb(222,222,184) 1px solid; border-left: rgb(222,222,184) 1px solid; padding-bottom: 5px; background-color: rgb(243,248,215); margin: 0px 1em; padding-left: 5px; padding-right: 5px; color: rgb(0,0,0); border-top: rgb(222,222,184) 1px solid; font-weight: bold; border-right: rgb(222,222,184) 1px solid; padding-top: 5px; background-origin: initial; background-clip: initial" class="msgheader"&gt;&lt;div style="text-align: right; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; float: right; padding-top: 0px" class="right"&gt;&lt;a style="font: 12px Arial, Tahoma; color: rgb(21,75,160); text-decoration: none" class="smalltxt" onclick="copyCode($('phpcode10'));" href="http://bbs.51js.com/viewthread.php?tid=85538###"&gt;[复制]&lt;/a&gt;&lt;/div&gt;Code:&lt;/div&gt;&lt;div style="border-bottom: rgb(222,222,184) 1px solid; border-left: rgb(222,222,184) 1px solid; padding-bottom: 10px; overflow-x: hidden; overflow-y: hidden; background-color: rgb(253,255,242); margin: 0px 1em; padding-left: 10px; width: auto !important; padding-right: 10px; word-wrap: break-word; border-top-width: 0px; border-right: rgb(222,222,184) 1px solid; padding-top: 10px; background-origin: initial; background-clip: initial" id="phpcode10" class="msgborder"&gt;&lt;code&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;&lt;span style="color: rgb(0,0,187)"&gt;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;function&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;g&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;o&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;++&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;o&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;x&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;;&lt;br /&gt;}&lt;br /&gt;var&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;obj&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;=&amp;nbsp;[{&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;x&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;},{&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;x&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;2&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;},{&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;x&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;3&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;}];&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;obj&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;g&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;g&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;multi&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;().&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;methodize&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;obj&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;g&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)"&gt;//[2,3,4]&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;函数变换的组合使用&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;实际上，在前面的介绍中我们了解了基本的函数变换，并且在例子中，其实我们在对这些变换进行组合应用，不过在组合应用时必须注意变换本身对参数造成的影响，这些影响会关系到组合变换的次序。例如你先对一个函数进行multi变换再进行methodize变换和先对一个函数进行methodize变换再进行multi变换，将得到截然不同的结果，原因是methodize变换事实上减少了输入参数的个数。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;批量变换&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;我们建立一个map方法，就能很方便地将一组函数批量变换到要使用它的对象（或原型）上。&lt;br /&gt;&lt;br /&gt;&lt;div style="border-bottom: rgb(222,222,184) 1px solid; border-left: rgb(222,222,184) 1px solid; padding-bottom: 5px; background-color: rgb(243,248,215); margin: 0px 1em; padding-left: 5px; padding-right: 5px; color: rgb(0,0,0); border-top: rgb(222,222,184) 1px solid; font-weight: bold; border-right: rgb(222,222,184) 1px solid; padding-top: 5px; background-origin: initial; background-clip: initial" class="msgheader"&gt;&lt;div style="text-align: right; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; float: right; padding-top: 0px" class="right"&gt;&lt;a style="font: 12px Arial, Tahoma; color: rgb(21,75,160); text-decoration: none" class="smalltxt" onclick="copyCode($('phpcode11'));" href="http://bbs.51js.com/viewthread.php?tid=85538###"&gt;[复制]&lt;/a&gt;&lt;/div&gt;Code:&lt;/div&gt;&lt;div style="border-bottom: rgb(222,222,184) 1px solid; border-left: rgb(222,222,184) 1px solid; padding-bottom: 10px; overflow-x: hidden; overflow-y: hidden; background-color: rgb(253,255,242); margin: 0px 1em; padding-left: 10px; width: auto !important; padding-right: 10px; word-wrap: break-word; border-top-width: 0px; border-right: rgb(222,222,184) 1px solid; padding-top: 10px; background-origin: initial; background-clip: initial" id="phpcode11" class="msgborder"&gt;&lt;code&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;&lt;span style="color: rgb(0,0,187)"&gt;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;var&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;extend&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;=&amp;nbsp;function(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;des&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;src&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;override&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(var&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;i&amp;nbsp;in&amp;nbsp;src&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;){&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;override&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;||&amp;nbsp;!&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;des&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;i&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;])&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,187)"&gt;des&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;i&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;]&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;src&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;i&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;des&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;;&lt;br /&gt;};&lt;br /&gt;var&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;map&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;=&amp;nbsp;function(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;obj&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;fn&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;thisObj&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;ret&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;=&amp;nbsp;{};&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(var&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;key&amp;nbsp;in&amp;nbsp;obj&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&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,0,187)"&gt;ret&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;key&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;]&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;fn&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;call&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;thisObj&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;obj&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;key&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;],&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;key&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;obj&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;ret&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;;&lt;br /&gt;};&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;现在我们建立执行批量操作的对象，或者方法集合，比如我们可以把刚才分散的Function.prototype属性赋值集中起来：&lt;br /&gt;&lt;br /&gt;&lt;div style="border-bottom: rgb(222,222,184) 1px solid; border-left: rgb(222,222,184) 1px solid; padding-bottom: 5px; background-color: rgb(243,248,215); margin: 0px 1em; padding-left: 5px; padding-right: 5px; color: rgb(0,0,0); border-top: rgb(222,222,184) 1px solid; font-weight: bold; border-right: rgb(222,222,184) 1px solid; padding-top: 5px; background-origin: initial; background-clip: initial" class="msgheader"&gt;&lt;div style="text-align: right; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; float: right; padding-top: 0px" class="right"&gt;&lt;a style="font: 12px Arial, Tahoma; color: rgb(21,75,160); text-decoration: none" class="smalltxt" onclick="copyCode($('phpcode12'));" href="http://bbs.51js.com/viewthread.php?tid=85538###"&gt;[复制]&lt;/a&gt;&lt;/div&gt;Code:&lt;/div&gt;&lt;div style="border-bottom: rgb(222,222,184) 1px solid; border-left: rgb(222,222,184) 1px solid; padding-bottom: 10px; overflow-x: hidden; overflow-y: hidden; background-color: rgb(253,255,242); margin: 0px 1em; padding-left: 10px; width: auto !important; padding-right: 10px; word-wrap: break-word; border-top-width: 0px; border-right: rgb(222,222,184) 1px solid; padding-top: 10px; background-origin: initial; background-clip: initial" id="phpcode12" class="msgborder"&gt;&lt;code&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;&lt;span style="color: rgb(0,0,187)"&gt;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;var&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;FunctionUtils&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,119,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,187)"&gt;on&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;on&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;reduce&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;reduce&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;methodize&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;methodize&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;after&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;after&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;before&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;before&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;curry&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;curry&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;multi&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;multi&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;extend&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(Function.&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;prototype&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;map&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;FunctionUtils&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;methodize&lt;/span&gt;&lt;span style="color: rgb(0,119,0)"&gt;));&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,187)"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;新的模式&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;事实上到这里我们可以建立一个新的模式，提供批量操作方法，将一组简单的函数经过复杂变换复制到我们需要这些操作的对象或集合上去。这种模式可以允许你先建立轻量的，无污染的模型，然后以某些变换组合将这些模型整理成对象或者创建类，具体细节完全可以交给你实现的函数变换器去处理。&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;转自：&lt;a href="http://bbs.51js.com/viewthread.php?tid=85538"&gt;http://bbs.51js.com/viewthread.php?tid=85538&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/eoiioe/aggbug/2046041.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/eoiioe/archive/2011/05/14/2046041.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/eoiioe/archive/2011/02/13/1953085.html</id><title type="text">缓存DataURI资源的解决方案</title><summary type="text">在Html5中，可以将图片经过base64编码后直接写在HTML中来展示图片，使用这种方式可以减少Http请求数量，从而可加快页面展示，同时也减少了很多对服务器的压力。 例: &lt;img src="data:image/png;base64,iVBORw0KGgooCAMAAAC7...（此处略去N个字）...lFTkSuQmCC"/&gt; 但这种将图片直接嵌入html中的用法，也会带来一些问题，...</summary><published>2011-02-13T04:28:00Z</published><updated>2011-02-13T04:28:00Z</updated><author><name>eoiioe</name><uri>http://www.cnblogs.com/eoiioe/</uri></author><link rel="alternate" href="http://www.cnblogs.com/eoiioe/archive/2011/02/13/1953085.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eoiioe/archive/2011/02/13/1953085.html"/><content type="html">&lt;div class="content"&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在Html5中，可以将图片经过base64编码后直接写在HTML中来展示图片，使用这种方式可以减少Http请求数量，从而可加快页面展示，同时也减少了很多对服务器的压力。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 例: &amp;lt;img src="data:image/png;base64,iVBORw0KGgooCAMAAAC7...（此处略去N个字）...lFTkSuQmCC"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 但这种将图片直接嵌入html中的用法，也会带来一些问题，&lt;br /&gt;问题一：同样的图片无法重复使用，每使用一次都要重复输出一遍图片代码，增加了html自身大小；&lt;br /&gt;问题二：假设html页面不做缓存（通常动态页面都会这么做），那么页面中引用的图片资源就无法缓存在浏览器中，相当于每次请求都会重新加载一遍图片。&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 由于存在着以上两个问题，就需要综合考虑是否值得使用DataURI的形式加载图片了。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这里也说明一下，使用&lt;a href="http://www.google.com.hk/search?hl=zh-CN&amp;amp;q=CSS+Sprites" target="_blank"&gt;CSS Sprites&lt;/a&gt;同样也能减少图片产生的大量http请求。由于CSS Sprites必须将图片用做背景，就会导致以下缺点，&lt;br /&gt;一来：修改图片很不方便；&lt;br /&gt;二来：经常会在html代码中包含很多空标签（只为给background提供一个展示的空间）；&lt;br /&gt;三来：会丧失许多图片自身的特性。&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 所以如果不能使用CSS Sprites，又要解决DataURI的问题，该怎么办呢？&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 解决方案也很简单，&lt;/strong&gt;&lt;br /&gt;第一步：建一个img.js文件，将DataURI的数据放到一个变量里，设置一下这个img.js文件的缓存时间（这段时间浏览器不会重复加载这个文件）；&lt;br /&gt;第二步：将多个图片逐个转成base64编码，全部放到img.js文件中；&lt;br /&gt;第三步：在html文件中动态创建img标签，将前面变量里的DataURI数据赋给img的src（变量是固定的可以重复使用）&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 经过以上三步就可以达到和CSS Sprites一样的效果了（只用一个http请求即可下载多个图片，同时也可以设置图片缓存时间），但我们可以让每个图片按照图片的模式工作，从而摆脱了background的束缚。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataURI浏览器支持情况：&lt;/strong&gt;&lt;br /&gt;Firefox 2+&lt;br /&gt;Opera 7.2+ - data URI必须少于4100个字符&lt;br /&gt;Chrome (all versions)&lt;br /&gt;Safari (all versions)&lt;br /&gt;Internet Explorer 8+ - data URI必须小于32k&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 附上图片转base64的php代码，仅供参考！&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;?php&lt;br /&gt;$file = realpath($_GET['img']);&lt;br /&gt;$pathParts = pathinfo($file);&lt;br /&gt;$extName = $pathParts['extension'];&lt;br /&gt;if($fp = fopen($file,"rb", 0))&lt;br /&gt;{&lt;br /&gt;$picture = fread($fp,filesize($file));&lt;br /&gt;fclose($fp);&lt;br /&gt;$img = '&amp;lt;img src="data:image/' . $extName . ';base64,' . base64_encode($picture) . '"/&amp;gt;';&lt;br /&gt;file_put_contents("tmp/{$pathParts['basename']}.txt", $img);&lt;br /&gt;}&lt;br /&gt;?&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 演示：&lt;/strong&gt;&lt;a href="http://os.heimali.com/" target="_blank"&gt;os.heimali.com&lt;/a&gt;（DataURI演示仅支持Webkit内核）&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;转自：&lt;a href="http://yu.heimali.com/dataURI-cache.html"&gt;http://yu.heimali.com/dataURI-cache.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/eoiioe/aggbug/1953085.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/eoiioe/archive/2011/02/13/1953085.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/eoiioe/archive/2010/09/30/1839088.html</id><title type="text">体验一下小巧清爽的WebOS</title><summary type="text">WebOS是一种运行在网页上的简单伪操作系统，其优势在于易于集成应用，免安装，配置完全存储在网络上，在任何地方都能轻松获取。 近日，黒玛丽WebOS和大家见面了，其完全由Javascript编写。初始页面加载只有不到28KB，其小巧程度完全可满足网络不佳地区的使用。 默认内置应用有 计算器，日历，八音盒，账本，晒TV。虽然应用不是很多，但其工作模式已十分明了，应用也会随着日后开发逐渐完善。 黒玛...</summary><published>2010-09-30T00:55:00Z</published><updated>2010-09-30T00:55:00Z</updated><author><name>eoiioe</name><uri>http://www.cnblogs.com/eoiioe/</uri></author><link rel="alternate" href="http://www.cnblogs.com/eoiioe/archive/2010/09/30/1839088.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eoiioe/archive/2010/09/30/1839088.html"/><content type="html">&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WebOS是一种运行在网页上的简单伪操作系统，其优势在于易于集成应用，免安装，配置完全存储在网络上，在任何地方都能轻松获取。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 近日，&lt;a title="黒玛丽WebOS" href="http://os.heimali.com/" target="_blank"&gt;黒玛丽WebOS&lt;/a&gt;和大家见面了，其完全由Javascript编写。初始页面加载只有不到28KB，其小巧程度完全可满足网络不佳地区的使用。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="center"&gt;&lt;embed height="400" type="application/x-shockwave-flash" align="center" width="480" src="http://player.youku.com/player.php/sid/XMjEwNTcxNzgw/v.swf" allowscriptaccess="sameDomain" quality="high"&gt;&lt;/p&gt;&lt;/embed&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 默认内置应用有 计算器，日历，八音盒，账本，晒TV。虽然应用不是很多，但其工作模式已十分明了，应用也会随着日后开发逐渐完善。&lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;div align="center"&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/eoiioe/osApps.png" width="276" height="729" /&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 黒玛丽WebOS的最大特点在于，所有图标都可以拖拽操作，并且也可以批量选取进行操作，同Windows操作系统操作习惯完全相同。&lt;/p&gt;&lt;p&gt;&lt;div align="center"&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/eoiioe/osMenu.png" width="311" height="504" /&gt;&lt;/div&gt;&lt;div align="center"&gt;&amp;nbsp;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#8220;快速通道&amp;#8221;也是一个很有特色的功能，当切入文件夹后，&amp;#8220;桌面&amp;#8221;将显示文件夹内的内容。之前&amp;#8220;桌面&amp;#8221;上的所有应用都会进入&amp;#8220;快速通道&amp;#8221;并保留应用的配置，点击&amp;#8220;快速通道&amp;#8221;里的图标可恢复应用到&amp;#8220;桌面&amp;#8221;。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 目前该系统尚不开放注册，只提供了一个测试帐号 test&amp;nbsp;， 密码 111111&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 友情提示：&lt;strong&gt;黒玛丽网站 不支持 IE6&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/eoiioe/aggbug/1839088.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/eoiioe/archive/2010/09/30/1839088.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/eoiioe/archive/2010/09/12/1824359.html</id><title type="text">Google巴克球Logo源码公布</title><summary type="text">还记得上周Google为纪念巴克球25周年公布的神奇Logo吗？ 没错，Logo的实现就像巴克球一样完美。为了减小页面体积，Google对其实现代码做了压缩处理，这对于众多前端爱好者来说，的确是件糟糕透顶的事。 经过一翻努力，本人对Google的巴克球源码进行了重写，现已发布在黒玛丽网站。为了方便理解和调试，写入大量注释的同时还加入了调试窗口和控制台窗口，可以方便随时观察当前执行的动作及变量状态。...</summary><published>2010-09-12T04:48:00Z</published><updated>2010-09-12T04:48:00Z</updated><author><name>eoiioe</name><uri>http://www.cnblogs.com/eoiioe/</uri></author><link rel="alternate" href="http://www.cnblogs.com/eoiioe/archive/2010/09/12/1824359.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eoiioe/archive/2010/09/12/1824359.html"/><content type="html">&lt;p dir="ltr"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 还记得上周Google为纪念巴克球25周年公布的神奇Logo吗？&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;div align="center"&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/eoiioe/google_doodle_buckyball.gif" /&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 没错，Logo的实现就像巴克球一样完美。为了减小页面体积，Google对其实现代码做了压缩处理，这对于众多前端爱好者来说，的确是件糟糕透顶的事。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 经过一翻努力，本人对Google的&lt;a title="巴克球源码-黒玛丽" href="http://yu.heimali.com/buckyball.html" target="_blank"&gt;巴克球源码&lt;/a&gt;进行了重写，现已发布在&lt;a title="黒玛丽-关注网盘,浏览器,WebOS业界动态" href="http://heimali.com/" target="_blank"&gt;黒玛丽&lt;/a&gt;网站。为了方便理解和调试，写入大量注释的同时还加入了调试窗口和控制台窗口，可以方便随时观察当前执行的动作及变量状态。&lt;/p&gt;&lt;p&gt;&lt;div align="center"&gt;&lt;a title="巴克球源码截图-黒玛丽" href="http://yu.heimali.com/buckyball.html" target="_blank"&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/eoiioe/buckyball-heimali.png" width="799" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="center"&gt;&amp;nbsp;&lt;/div&gt;&lt;div align="left"&gt;&amp;nbsp;&lt;/div&gt;&lt;div align="left"&gt;附一段巴克球的相关采访：&lt;/div&gt;&lt;div align="left"&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在讨论了一些未来的doodle之后，他们谈到了巴克球25周年的doodle，维基百科上说巴克球完全由碳组成，是在一个中空的管形球体。当Hom在白板上画了一个她理解的巴克球概念的时候，她说这看起来像是个足球嘛，让大家联想到是不是又要用到世界杯时候用到的doodle了。之后Hom说他有两个最终设计的想法。一个是加点互动，做一个圆周运动旋转的微小粒子，鼠标挪过去之后放大成一个更大的巴克球，然后用户可以用鼠标拖着它旋转。&lt;/p&gt;&lt;div align="center"&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/eoiioe/google_doodle10.jpg" width="380" /&gt; &lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/eoiioe/google_doodle09.jpg" width="380" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 她说团队里还没做过这个想法的设计，不成的话就做一个静态的doodle。结果当然大家都看到了，Hom的互动巴克球最终很成功。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 查看原文：&lt;a href="http://yu.heimali.com/buckyball-archive.html"&gt;http://yu.heimali.com/buckyball-archive.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 演示地址：&lt;a href="http://yu.heimali.com/buckyball.html"&gt;http://yu.heimali.com/buckyball.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt; &lt;img src="http://www.cnblogs.com/eoiioe/aggbug/1824359.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/eoiioe/archive/2010/09/12/1824359.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/eoiioe/archive/2010/08/08/1795080.html</id><title type="text">你还要与僵尸共舞吗？</title><summary type="text">微软在2010年3月1日宣布结束对IE6的主流支持，世界各地的IE6粉丝们在美国科罗拉多州为IE6举办了葬礼，这个发布已经8年有余的老大爷浏览器终于安详地走下舞台了。 在中国大陆，这个已经过世的僵尸依然遍布在大街小巷，大家却能够不以为然 （僵尸都替你冏了）。My god，不会是最近“植物大战僵尸”太过流行的缘故吧！IE6 像僵尸一样，散发着恶臭截至2010年7月国内IE6...</summary><published>2010-08-08T04:01:00Z</published><updated>2010-08-08T04:01:00Z</updated><author><name>eoiioe</name><uri>http://www.cnblogs.com/eoiioe/</uri></author><link rel="alternate" href="http://www.cnblogs.com/eoiioe/archive/2010/08/08/1795080.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eoiioe/archive/2010/08/08/1795080.html"/><content type="html">&lt;p&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 微软在2010年3月1日宣布结束对IE6的主流支持，世界各地的IE6粉丝们在美国科罗拉多州为IE6举办了葬礼，这个发布已经8年有余的老大爷浏览器终于安详地走下舞台了。&lt;br /&gt;&lt;/p&gt;&lt;div align="center"&gt;&lt;div align="center"&gt;&lt;img border="0" alt="IE6即将入土" src="http://images.cnblogs.com/cnblogs_com/eoiioe/2000320446937263.jpg" width="350" longdesc="IE6即将入土" height="233" /&gt;&amp;nbsp;&amp;nbsp; &lt;img border="0" alt="众多浏览器为IE6守灵" src="http://images.cnblogs.com/cnblogs_com/eoiioe/20003321766350516.jpg" width="350" longdesc="众多浏览器为IE6守灵" height="233" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div align="center"&gt;&amp;nbsp;&lt;/div&gt;&lt;p align="left"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在中国大陆，这个已经过世的僵尸依然遍布在大街小巷，大家却能够不以为然 （僵尸都替你冏了）。My god，不会是最近&amp;#8220;植物大战僵尸&amp;#8221;太过流行的缘故吧！&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;div align="center"&gt;&lt;img border="0" alt="幽灵IE6游荡中国的大街小巷" src="http://images.cnblogs.com/cnblogs_com/eoiioe/0910240.jpg" width="546" longdesc="幽灵IE6游荡中国的大街小巷" height="199" /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;strong&gt;IE6 像僵尸一样，散发着恶臭&lt;/strong&gt;&lt;/div&gt;&lt;div align="center"&gt;&amp;nbsp;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div align="center"&gt;&lt;img border="0" alt="2010年7月中国IE6比例高达53%" src="http://images.cnblogs.com/cnblogs_com/eoiioe/201007.jpg" width="433" longdesc="2010年7月中国IE6比例高达53%" height="351" /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;strong&gt;截至2010年7月国内IE6比例仍高达53%（过半的人依然与僵尸共舞）&lt;/strong&gt;&lt;/div&gt;&lt;div align="center"&gt;&amp;nbsp;&lt;/div&gt;&lt;div align="left"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; OK，如果你不想同僵尸IE6一起进棺材（大部分正常人都会这么认为，嗯，是这样的），那么好，马上升级到微软最先进的IE8好了！如果你不明白我在讲什么，请遵照下图点击&amp;#8220;升级&amp;#8221;（360安全卫士不用多说了吧），只要5分钟，即可轻松拜托僵尸IE6的困扰！&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;img border="0" alt="360软件管家升级IE6" src="http://images.cnblogs.com/cnblogs_com/eoiioe/ie6_up.jpg" width="600" longdesc="360软件管家升级IE6" height="233" /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;strong&gt;360软件管家升级IE6&lt;/strong&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&lt;/div&gt;&lt;div align="left"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 除了IE，你还知道什么新鲜玩意吗？不只是用IE才可以上网的哦！互联网这些年涌现出了一大批更加高级，安全，快速的浏览器，在国外都已经很普及了，在此仅推荐几款主流浏览器（下图依次是 ie8，firefox，chrome，opera，safari 360软件管家均可方便下载），为了使大家更容易理解各个浏览器的特点，用几款车来做个类比是一个很不错的方式，看图！&lt;/div&gt;&lt;div align="left"&gt;&amp;nbsp;&lt;/div&gt;&lt;div align="center"&gt;&lt;img border="0" alt="主流浏览器汽车类比图" src="http://images.cnblogs.com/cnblogs_com/eoiioe/more_browsers.png" width="600" longdesc="主流浏览器汽车类比图" height="403" /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;strong&gt;主流浏览器汽车类比图&lt;br /&gt;&lt;/div&gt;&lt;/strong&gt;&lt;div align="left"&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果你喜欢本文，请转发给你的好友！&lt;/div&gt;&lt;div align="left"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果你看到有人还在使用IE6，请帮 他/她 升级！&lt;/div&gt;&lt;div align="left"&gt;&amp;nbsp;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/eoiioe/aggbug/1795080.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/eoiioe/archive/2010/08/08/1795080.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/eoiioe/archive/2010/08/07/1794682.html</id><title type="text">web 3D 即将到来</title><summary type="text">最近apple官网的html5演示中增加了3D效果的相册，这代表着safari5 成为了第一个用css3实现3D效果的浏览器，由此可见web3D时代已指日可待。CSS3 3D Gallery本文主要介绍 safari5（截至2010-08-07所有其他webkit内核浏览器均还不能支持3D效果） 中实现3D效果的CSS3样式1、-webkit-perspective （3D透视属性）...</summary><published>2010-08-07T05:54:00Z</published><updated>2010-08-07T05:54:00Z</updated><author><name>eoiioe</name><uri>http://www.cnblogs.com/eoiioe/</uri></author><link rel="alternate" href="http://www.cnblogs.com/eoiioe/archive/2010/08/07/1794682.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eoiioe/archive/2010/08/07/1794682.html"/><content type="html">&lt;p dir="ltr"&gt;最近apple官网的html5演示中增加了3D效果的相册，这代表着safari5 成为了第一个用css3实现3D效果的浏览器，由此可见web3D时代已指日可待。&lt;br /&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;a title="safari html5 3d gallery" href="http://developer.apple.com/safaridemos/showcase/gallery/" target="_blank"&gt;&lt;img border="0" alt="3D效果的相册" src="http://images.cnblogs.com/cnblogs_com/eoiioe/gallery.jpg" width="500" longdesc="3D效果的相册" height="318" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="center"&gt;CSS3 3D Gallery&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;本文主要介绍 safari5（截至2010-08-07所有其他webkit内核浏览器均还不能支持3D效果） 中实现3D效果的CSS3样式&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;1、&lt;strong&gt;-webkit-perspective&lt;/strong&gt;&amp;nbsp; （3D透视属性）&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;应用该属性可将平面图形转换为具有远景透视效果的3D图形，该属性只能使其孩子元素产生3D，不对自身节点内容产生影响&lt;/p&gt;&lt;p align="left"&gt;代码实例　&lt;/p&gt;&lt;p align="left"&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;" onclick="cnblogs_code_show('8022ebe8-c0cb-4a84-a1c5-d7c94aa01ef1')"&gt;&lt;img style="display: none" id="code_img_opened_8022ebe8-c0cb-4a84-a1c5-d7c94aa01ef1" class="code_img_opened" onclick="cnblogs_code_hide('8022ebe8-c0cb-4a84-a1c5-d7c94aa01ef1',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt; &lt;div id="cnblogs_code_open_8022ebe8-c0cb-4a84-a1c5-d7c94aa01ef1" class="cnblogs_code_hide"&gt;&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;html&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;head&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&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: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;meta&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="viewport"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;nbsp;content&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="user-scalable=no,&amp;nbsp;width=device-width"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&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: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;Setting&amp;nbsp;the&amp;nbsp;Perspective&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;head&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;body&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&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: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;div&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;style&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="font-size:&amp;nbsp;200%;&amp;nbsp;margin:&amp;nbsp;1em&amp;nbsp;1em;&amp;nbsp;-webkit-perspective:&amp;nbsp;500;"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;I&amp;nbsp;have&amp;nbsp;perspective.&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: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;div&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;style&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="height:&amp;nbsp;6em;&amp;nbsp;width:&amp;nbsp;6em;&amp;nbsp;text-align:center;&amp;nbsp;background-color:&amp;nbsp;yellow;&amp;nbsp;-webkit-transform:&amp;nbsp;rotateY(40deg);"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&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;I'm&amp;nbsp;3D.&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: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&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: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;body&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;html&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;&lt;div align="center"&gt;&lt;img border="0" alt="3D webkit perspective" src="http://images.cnblogs.com/cnblogs_com/eoiioe/3d_perspective.jpg" width="460" longdesc="使用-webkit-perspective前后对比" height="317" /&gt;&lt;/div&gt;&lt;div align="center"&gt;使用-webkit-perspective前后对比&lt;/div&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;2、&lt;strong&gt;-webkit-transform-style&lt;/strong&gt;&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;该属性用以表示被嵌套的元素在3D空间采用何种渲染方式（&lt;span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium 'Times New Roman'; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"&gt;&lt;span style="font-family: Courier, Consolas, monospace; color: rgb(102,102,102); font-size: 13px" class="Apple-style-span"&gt;flat&lt;/span&gt;&lt;/span&gt; 或 &lt;span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium 'Times New Roman'; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"&gt;&lt;span style="font-family: Courier, Consolas, monospace; color: rgb(102,102,102); font-size: 13px" class="Apple-style-span"&gt;preserve-3d&lt;/span&gt;&lt;/span&gt;），如果使用了flat（默认），那么所有子节点元素均是不再有3D效果&lt;/p&gt;&lt;p align="left"&gt;值得注意的是，如果你构建的3D节点树（3D tree）在其祖先节点（ancestor element）后面，有可能会无法显示出来，为了避免这种情况，请确保祖先节点的-webkit-transform-style&amp;nbsp;属性设置为 preserve-3d ，默认值是flat。&lt;/p&gt;&lt;p align="left"&gt;另外，那些overflow设置为hidden的节点也不能正常渲染3D效果，起将会按照flat的模式渲染。&lt;/p&gt;&lt;p align="left"&gt;代码实例&lt;/p&gt;&lt;p align="left"&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;" onclick="cnblogs_code_show('c0c3e637-59e6-4875-b875-fe075f9bb68d')"&gt;&lt;img style="display: none" id="code_img_opened_c0c3e637-59e6-4875-b875-fe075f9bb68d" class="code_img_opened" onclick="cnblogs_code_hide('c0c3e637-59e6-4875-b875-fe075f9bb68d',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt; &lt;div id="cnblogs_code_open_c0c3e637-59e6-4875-b875-fe075f9bb68d" class="cnblogs_code_hide"&gt;&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;div&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;style&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="font-size:&amp;nbsp;200%;&amp;nbsp;margin:&amp;nbsp;1em&amp;nbsp;1em;-webkit-perspective:&amp;nbsp;500;"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;div&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;style&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="height:&amp;nbsp;8em;width:&amp;nbsp;6em;text-align:center;background-color:&amp;nbsp;yellow;-webkit-transform-style:&amp;nbsp;preserve-3d;-webkit-transform:&amp;nbsp;rotateY(40deg);"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&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;I&amp;nbsp;am&amp;nbsp;the&amp;nbsp;parent,&amp;nbsp;and&amp;nbsp;have&amp;nbsp;perspective.&lt;br /&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: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;div&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;style&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="-webkit-transform:&amp;nbsp;translateZ(3em);background-color:&amp;nbsp;blue;"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&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;I&amp;nbsp;stand&amp;nbsp;out&amp;nbsp;from&amp;nbsp;my&amp;nbsp;parent&amp;nbsp;element.&lt;br /&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: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p align="left"&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/eoiioe/preserving_3D.jpg" width="458" height="287" /&gt;&lt;/p&gt;&lt;p align="center"&gt;代码实例 最外层div 没有 &lt;font color="#0000ff"&gt;-webkit-perspective&lt;/font&gt; 属性，使用 &lt;font color="#0000ff"&gt;-webkit-transform-style:&amp;nbsp;preserve-3d&lt;/font&gt; 的时候的效果&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp; &lt;/p&gt;&lt;p align="center"&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/eoiioe/perspective_and_preserving_3D.jpg" width="444" height="293" /&gt;&lt;/p&gt;&lt;p align="center"&gt;&amp;nbsp;代码实例 最外层div&amp;nbsp;使用 &lt;font color="#0000ff"&gt;-webkit-perspective&lt;/font&gt; 属性，同时使用 &lt;font color="#0000ff"&gt;-webkit-transform-style:&amp;nbsp;preserve-3d&lt;/font&gt; 的时候的效果&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;参考文档：&lt;a href="http://developer.apple.com/safari/library/documentation/internetweb/conceptual/safarivisualeffectsprogguide/Transforms/Transforms.html"&gt;http://developer.apple.com/safari/library/documentation/internetweb/conceptual/safarivisualeffectsprogguide/Transforms/Transforms.html&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/eoiioe/aggbug/1794682.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/eoiioe/archive/2010/08/07/1794682.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
