<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.limboy.com/styles/feedsky8.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feed.limboy.com" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/dexteryy" type="application/rss+xml"></fs:self_link><lastBuildDate>Mon, 15 Feb 2010 14:24:44 GMT</lastBuildDate><title>YY in Limbo 混沌海狂想</title><description>这里既空虚又充实，没有规则，没有约束，创造来自思考，生存依赖想像，现实源自梦想</description><image><url>http://www.feedsky.com/feed/dexteryy/sc/gif</url><title>YY in Limbo 混沌海狂想</title><link>http://www.limboy.com</link></image><link>http://www.limboy.com</link><language>en</language><pubDate>Mon, 15 Feb 2010 14:43:45 GMT</pubDate><item><title>刘谦手穿桌子魔术完全揭秘</title><link>http://item.feedsky.com/~feedsky/dexteryy/~6072067/333038664/4180063/1/item.html</link><content:encoded>&lt;p&gt;&lt;a href='http://www.limboy.com/2010/02/15/magic/ajpg/' rel='attachment wp-att-253' title='a.jpg'&gt;&lt;img src='http://www.limboy.com/wp-content/uploads/2010/02/a.jpg' alt='a.jpg' style=&quot;border:0;margin:0 10px 10px 0;float:left;&quot;  /&gt;&lt;/a&gt;先声明，如果满足好奇心和启发智慧给你带来的快乐，不能超过魔术的惊奇效果带来的快乐，请不要继续看此文～&lt;/p&gt;
&lt;p&gt;看了CCAV的春晚重播，最后那个手穿桌子的魔术我已经完全弄懂了～&lt;/p&gt;
&lt;p&gt;桌子上那四只白瓷茶杯是第一个关键要素，它们很可疑：1，圆桌周围那些观众根本不会喝茶，为什么要放茶杯呢？2，为什么要用老式的白瓷杯，而不用刘谦面前那种透明玻璃杯？（装点果汁还可以做广告）。因为它们其实是障眼法的组成部分，刘谦左边（观众的右边）的杯子底下，其实掩盖着一个“洞”（节目开始的时候，那个黑桌布跟它放在一起）&lt;/p&gt;
&lt;p&gt;桌子本身是第二个关键要素，这张桌子是很少见的圆环形，让观众围在周围其实只是托词，真实目的是让桌子玻璃可以隐蔽的移动（圆环的自转），把右边的那个洞移到刘谦面前。这里有一个难点：移动玻璃的时候也会拖动桌上放的其他东西（比如杯子）。所以他们做了&lt;a target=&quot;_blank&quot; href=&quot;http://bbs.ngacn.cc/read.php?tid=3121386&quot;&gt;双层的玻璃&lt;/a&gt;，刘谦面前那一段圆环只有一层玻璃，而且是下层的，洞就在这一层，旋转的也是这一层，而其他人面前有两层，杯子之类的东西都放在上层。&lt;/p&gt;
&lt;p&gt;刘谦让汇源老板拿三只硬币放在桌下，是第三个关键要素，重看这一段节目，在汇源老板把手伸到桌下的时候，会发现镜头拉近来了一个特写，在镜头拉近之前，刘谦面前的玻璃在表演过几个节目之后其实已经很脏了，可以明显的看到有一些污渍的反光跟周围的反光不同，而在“没洗手”的那个特写镜头之后，会看到那些污渍已经没了！因为正是在这个时候，玻璃被提前旋转了。而且旋转玻璃的人就是刘谦正后方那个猥琐男人……&lt;/p&gt;
&lt;p&gt;从镜头移回来开始，刘谦的左手就一直遮掩着桌上一个位置，接下来他开始跟董卿扯淡，用布擦桌子，把观众的视线吸引到他擦桌子的右手，而左手始终保持在那个位置没动过，因为左手下面正是刚才移过来的那个洞，然后就开始表演手穿玻璃了，注意他的左手是直接平移到中间的，实际上是把洞移到了中间&lt;/p&gt;
&lt;p&gt;总结：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;永远不要相信现场观众不是托。&lt;/li&gt;
&lt;li&gt;那些看似无意的动作，摆设和插科打诨其实很可能是关键。&lt;/li&gt;
&lt;li&gt;魔术师总是试图操纵你的眼睛，只要不看魔术师想让你看的那个方向，你就有可能识破障眼法～&lt;/li&gt;
&lt;/ol&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/333038664/dexteryy/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dexteryy/~6072067/333038664/4180063/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/dexteryy/333038664/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/dexteryy/333038664/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;fsflare&quot;&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=492c15a120567d730b0ad47dd1d17f79&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=492c15a120567d730b0ad47dd1d17f79&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=537a2cf6ea1eb7079e2a173ded8d66a8&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=537a2cf6ea1eb7079e2a173ded8d66a8&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=ca11c9ad29023af0734d2570bd6305cb&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=ca11c9ad29023af0734d2570bd6305cb&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.limboy.com/2010/02/15/magic/feed/</wfw:commentRss><description>先声明，如果满足好奇心和启发智慧给你带来的快乐，不能超过魔术的惊奇效果带来的快乐，请不要继续看此文～
看了CCAV的春晚重播，最后那个手穿桌子的魔术我已经完全弄懂了～
桌子上那四只白瓷茶杯是第一个关键要素，它们很可疑：1，圆桌周围那些观众根本不会喝茶，为什么要放茶杯呢？2，为什么要用老式的白瓷杯，而不用刘谦面前那种透明玻璃杯？（装点果汁还可以做广告）。因为它们其实是障眼法的组成部分，刘谦左边（观众的右边）的杯子底下，其实掩盖着一个“洞”（节目开始的时候，那个黑桌布跟它放在一起）
桌子本身是第二个关键要素，这张桌子是很少见的圆环形，让观众围在周围其实只是托词，真实目的是让桌子玻璃可以隐蔽的移动（圆环的自转），把右边的那个洞移到刘谦面前。这里有一个难点：移动玻璃的时候也会拖动桌上放的其他东西（比如杯子）。所以他们做了双层的玻璃，刘谦面前那一段圆环只有一层玻璃，而且是下层的，洞就在这一层，旋转的也是这一层，而其他人面前有两层，杯子之类的东西都放在上层。
&lt;span class=&quot;readmore&quot;&gt;&lt;a href=&quot;http://www.limboy.com/2010/02/15/magic/&quot; title=&quot;刘谦手穿桌子魔术完全揭秘&quot; target=&quot;_blank&quot;&gt;阅读全文——共838字&lt;/a&gt;&lt;/span&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/333038664/dexteryy/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dexteryy/~6072067/333038664/4180063/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/dexteryy/333038664/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/dexteryy/333038664/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;fsflare&quot;&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=492c15a120567d730b0ad47dd1d17f79&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=492c15a120567d730b0ad47dd1d17f79&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=537a2cf6ea1eb7079e2a173ded8d66a8&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=537a2cf6ea1eb7079e2a173ded8d66a8&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=ca11c9ad29023af0734d2570bd6305cb&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=ca11c9ad29023af0734d2570bd6305cb&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/p&gt;</description><category>纯水</category><pubDate>Mon, 15 Feb 2010 22:24:44 +0800</pubDate><author>dexter_yy</author><comments>http://www.limboy.com/2010/02/15/magic/#comments</comments><guid isPermaLink="false">http://www.limboy.com/2010/02/15/magic/</guid><dc:creator>dexter_yy</dc:creator><fs:srclink>http://www.limboy.com/2010/02/15/magic/</fs:srclink><fs:srcfeed>http://www.limboy.com/feed/rss2/</fs:srcfeed><fs:itemid>feedsky/dexteryy/~6072067/333038664/4180063</fs:itemid></item><item><title>以国家之名</title><link>http://item.feedsky.com/~feedsky/dexteryy/~6072067/333038665/4180063/1/item.html</link><content:encoded>&lt;p&gt;&lt;a href='http://www.limboy.com/2010/01/10/in-the-name-of-country/change-1jpg/' rel='attachment wp-att-249' title='change-1.jpg'&gt;&lt;img src='http://www.limboy.com/wp-content/uploads/2010/01/change-1.jpg' alt='change-1.jpg' style=&quot;margin:0 10px 0 0;float:left;&quot; /&gt;&lt;/a&gt;从我的Gmail里翻出的记录：&lt;/p&gt;
&lt;div style=&quot;margin-left:255px;&quot;&gt;
&lt;h4&gt;Mon, Feb 4, 2008 at 5:16 AM&lt;/h4&gt;
&lt;blockquote&gt;&lt;p&gt;
subject: 注册信息&lt;/p&gt;
&lt;p&gt;尊敬的用户，您的用户信息注册成功！用户名:dexter_yy&lt;/p&gt;&lt;/blockquote&gt;
&lt;h4&gt;Thu, Feb 14, 2008 at 2:14 AM&lt;/h4&gt;
&lt;blockquote&gt;&lt;p&gt;subject: ICP备案审核通知（审核拒绝）&lt;/p&gt;
&lt;p&gt;尊敬的用户:dexter_yy，很遗憾的通知您，您的ICP备案申请不能通过审核，拒绝原因是：您所备案的网站：请确认网站服务内容一栏填写是否准确.&lt;br /&gt;
接入商的核实意见：&lt;br /&gt;
(1) 信息不正确 请重新核对准确接入商&lt;/p&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;h4&gt;Mon, Feb 23, 2009 at 8:36 PM&lt;/h4&gt;
&lt;blockquote&gt;&lt;p&gt;subject: 关于网站备案用户执行“找回密码”操作后新密码的通知&lt;/p&gt;
&lt;p&gt;尊敬的用户：dexter_yy，您于2009-02-23 20:33:34使用了备案用户找回密码功能，您找回的密码是：[马赛克]。请慎重保管注册密码！ 工业和信息化部网站备案系统&lt;/p&gt;&lt;/blockquote&gt;
&lt;h4&gt;Wed, Mar 4, 2009 at 1:54 PM&lt;/h4&gt;
&lt;blockquote&gt;&lt;p&gt;subject: 关于ICP备案信息不符合备案要求退回修正的通知&lt;/p&gt;
&lt;p&gt;尊敬的用户，很遗憾的通知您，您的ICP备案申请(limboy.com)，经[上海市通信管理局2]审核，不符合备案要求，现退回修改，原因请登陆系统查询。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h4&gt;Sat, Dec 12, 2009 at 2:59 PM&lt;/h4&gt;
&lt;blockquote&gt;&lt;p&gt;subject: 关于网站备案用户执行“找回密码”操作后新密码的通知&lt;/p&gt;
&lt;p&gt;尊敬的用户：dexter_yy，您于2009-12-12 14:48:31使用了备案用户找回密码功能，您找回的密码是：XXXXXX。请慎重保管注册密码！ 工业和信息化部网站备案系统&lt;/p&gt;&lt;/blockquote&gt;
&lt;h4&gt;Wed, Jan 6, 2010 at 10:45 AM&lt;/h4&gt;
&lt;blockquote&gt;&lt;p&gt;subject: 关于ICP备案申请审核通过的通知&lt;/p&gt;
&lt;p&gt;尊敬的用户：您的ICP备案申请已通过审核,备案/许可证编号为: 沪ICP备10000943号 ，审核通过日期：2010-01-06。 &lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;撒花～&lt;/p&gt;
&lt;p&gt;本来我准备只贴出以上这些邮件内容，然后就结束本文点submit按钮发POST请求……但是这种把思考的工作托付给读者的写法，我还是有些不太放心，我担心这会让人误解我的意图，以为我是在嘲讽帝国衙门的政策法规和办事效率，不，如果这是你的理解，你错了，我是在嘲讽自己。&lt;/p&gt;
&lt;p&gt;我的blog被关闭了大概有一两个月，在这段时间里，有很多人来问我，我都没回应，因为实在没什么好说的，没有黑幕，没有冤情，没有河蟹。我有充足的时间（早在一两年前我就知道不备案的后果），我有足够的帮助（&lt;a href=&quot;http://www.paangood.com/index.php&quot; target=&quot;_blank&quot;&gt;盘古&lt;/a&gt;有专人为客户的备案提供支持），我有相对宽松的环境（直到现在，工信部仍然不会在处理申请的时候去审查网站的内容，甚至都不在乎网站是否存在，你只要去申请，只要你提供的信息不会对他们的工作流程造成困扰，他们就给你发ICP许可证），但我却把早就应该完成的备案，一直拖延到现在。都是我自己的错。&lt;/p&gt;
&lt;p&gt;也许有人会说：你到底是真傻逼还是在装逼，错的首先是政府啊，你的blog被关闭，是因为现在这种荒谬愚蠢的国家政策，是因为统治阶层不懂得也不喜欢互联网的开放精神，是因为伟光正要控制信息，是因为工信部的&lt;a target=&quot;_blank&quot; href=&quot;http://www.google.com/search?q=%E5%B7%A5%E4%BF%A1%E9%83%A8%E7%BD%91%E7%AB%99%E5%A4%87%E6%A1%88%E7%B3%BB%E7%BB%9F%E5%A4%AA%E7%83%82%E6%98%AF%E5%A4%A7%E9%87%8F%E7%BD%91%E7%AB%99%E6%B2%A1%E6%9C%89%E5%A4%87%E6%A1%88%E7%9A%84%E4%B8%BB%E8%A6%81%E5%8E%9F%E5%9B%A0&quot;&gt;备案系统太难用&lt;/a&gt;，是因为公务员的办事效率太低……总之，你怎么能不抱怨呢，你这不是麻木顺从的劣根性么&lt;/p&gt;
&lt;p&gt;我会从土豆网里搜出一个视频来作为回答，不是什么经典大片，而是TV动画，如果不是宅男宅女应该就没看过——《地狱少女》第二部的第15话，标题是“以國家之名的墮落”，在这集故事里，女主角百合子的父亲是一个loser，家境穷困，生活很艰辛，他认为一切不幸的根源都是日本当时的首相大泉太一郎（这个名字应该不用注解罢），把全部时间投入到基层的助选活动中，支持另一个首相候选人，为此还不断借债，把自家的小工厂扔给妻子一人支撑。百合子在故事开始的时候就求助于地狱少女，希望把大泉首相立刻送进地狱，因为在这种家庭环境的影响下，她也认为只要没有大泉，人民生活就会幸福。但是后来，她的母亲劳累过度病倒了，在病床上，母亲说出了朴实的真相：&lt;/p&gt;
&lt;p&gt;母亲：“不工作就不能生存……”&lt;br /&gt;
百合子：“果然这个国家的政治体制很异常！竟然要让人工作到弄跨身体才能生存！这都是大泉政府的错！”&lt;br /&gt;
母亲：“不是这样的……”&lt;br /&gt;
百合子：“什么不是啊，大泉首相上台前，我上小学的那个时候，生活不是还很轻松吗？！”&lt;br /&gt;
母亲：“更痛苦的时候也遇到过。可那时候一家人一起克服过来了，挥汗如雨的工作”。&lt;br /&gt;
百合子：“诶？”&lt;/p&gt;
&lt;p&gt;虽然大泉的政策确实对百合子家工厂的衰败负有责任，但是导致境况越来越差的却是自己，不幸的根源是自己。自己的生活和自己的事业，最终还是需要自己的努力工作来改善，百合子的父亲把希望完全寄托在大环境的剧变上，但是大环境却不可能永远满足个人愿望，因为社会永远都由各种少数派和多数派拼凑而成，时代永远都像洪流一样让人身不由己的“前进”，正如比古清十郎说的那样：“时代和人心都有弊病，无论你有再强大的力量，也阻止不了时代的洪流。现今如此，今后亦然”。&lt;/p&gt;
&lt;p&gt;最后，即使大环境真的剧变了，就能立刻体验到改善么？说到这里我想到了台湾的“马上就好”，想到了美国的“Change Has Come To America”，想到了日本的“政权更迭”……只要自己不行动，改善就不可能从天而降。如果等到那时才行动，就更不可能“马上就好”。既然早晚要行动，为什么不从现在就开始？&lt;/p&gt;
&lt;p&gt;以国家之名的懒惰，以国家之名的松懈，以国家之名的放弃，也许能赢得一些同情和理解，但是最终失去那些东西的仍然是我们自己。&lt;/p&gt;
&lt;p&gt;最后，百合子委托给地狱少女的不是大泉首相，而是自己的父亲。完整视频：&lt;/p&gt;
&lt;object width=&quot;500&quot; height=&quot;380&quot;&gt;
&lt;param name=&quot;movie&quot; value=&quot;http://www.tudou.com/v/734oFQo5HwE&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;wmode&quot; value=&quot;opaque&quot;&gt;&lt;/param&gt;
&lt;p&gt;&lt;embed src=&quot;http://www.tudou.com/v/734oFQo5HwE&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; wmode=&quot;opaque&quot; width=&quot;420&quot; height=&quot;363&quot;&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;p&gt;PS：其实我并不是因为没及时备案就妄想出这些，而是因为长时间以来在twitter上体验到的氛围，积压在心底。&lt;/p&gt;
&lt;p&gt;PS2：我的“拖延”习惯貌似是一种症状，叫“Procrastination”，由于最近帝国对网络的打击，相关文章的链接失效了^_^b&amp;#8230;..请自行搜索……如果不是看了那些文章，我还以为这是个性呢……&lt;/p&gt;
&lt;p&gt;PS3：虽然我常常几个月都不更新blog，但是在blog关掉的这段时间里，却叛逆似的积压了好几篇……有的发在论坛，有的放在evernote里，接下来会找时间发出来，希望不要拖延-___-b&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/333038665/dexteryy/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dexteryy/~6072067/333038665/4180063/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/dexteryy/333038665/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/dexteryy/333038665/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;fsflare&quot;&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=ee34fd85abc32a593a7b6d496963c44b&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=ee34fd85abc32a593a7b6d496963c44b&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=b5ae0f52d6303628a1ccbac3a0b5ecd7&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=b5ae0f52d6303628a1ccbac3a0b5ecd7&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=c1f2a507d1fbf81e05884263c1579505&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=c1f2a507d1fbf81e05884263c1579505&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.limboy.com/2010/01/10/in-the-name-of-country/feed/</wfw:commentRss><description>从我的Gmail里翻出的记录：

Mon, Feb 4, 2008 at 5:16 AM

&lt;span class=&quot;readmore&quot;&gt;&lt;a href=&quot;http://www.limboy.com/2010/01/10/in-the-name-of-country/&quot; title=&quot;以国家之名&quot; target=&quot;_blank&quot;&gt;阅读全文——共2442字&lt;/a&gt;&lt;/span&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/333038665/dexteryy/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dexteryy/~6072067/333038665/4180063/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/dexteryy/333038665/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/dexteryy/333038665/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;fsflare&quot;&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=ee34fd85abc32a593a7b6d496963c44b&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=ee34fd85abc32a593a7b6d496963c44b&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=b5ae0f52d6303628a1ccbac3a0b5ecd7&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=b5ae0f52d6303628a1ccbac3a0b5ecd7&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=c1f2a507d1fbf81e05884263c1579505&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=c1f2a507d1fbf81e05884263c1579505&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/p&gt;</description><category>纯水</category><category>日漫</category><category>Blogger</category><category>代码</category><pubDate>Sun, 10 Jan 2010 23:51:45 +0800</pubDate><author>dexter_yy</author><comments>http://www.limboy.com/2010/01/10/in-the-name-of-country/#comments</comments><guid isPermaLink="false">http://www.limboy.com/2010/01/10/in-the-name-of-country/</guid><dc:creator>dexter_yy</dc:creator><fs:srclink>http://www.limboy.com/2010/01/10/in-the-name-of-country/</fs:srclink><fs:srcfeed>http://www.limboy.com/feed/rss2/</fs:srcfeed><fs:itemid>feedsky/dexteryy/~6072067/333038665/4180063</fs:itemid></item><item><title>我爱灾难片！讨论一下《2012》的细节和背景</title><link>http://item.feedsky.com/~feedsky/dexteryy/~6072067/333038666/4180063/1/item.html</link><content:encoded>&lt;p&gt;&lt;a href='http://www.limboy.com/2009/11/14/mayan2012/screen-shot-2009-11-14-at-72113-ampng-2/' rel='attachment wp-att-247' title='screen-shot-2009-11-14-at-72113-am.png'&gt;&lt;img src='http://www.limboy.com/wp-content/uploads/2009/11/screen-shot-2009-11-14-at-72113-am.png' alt='screen-shot-2009-11-14-at-72113-am.png' style=&quot;float:left;width:220px;margin:0 10px 5px 0&quot;  /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.mtime.com/movie/80706/&quot; target=&quot;_blank&quot; &gt;《2012》&lt;/a&gt;最大的缺点还是世界毁灭的太快了，悬念做的不够，我更喜欢cloverfield那种调调，此外视觉效果还是有点单调，这年头只靠一个卷起肯尼迪航母的海啸背景已经唬不住人了，观众眼里尽是绿幕。不过要求太高也是不厚道的，总体来说，《2012》只要把那些传统的美式英雄主义和小范围人道主义的部分剪掉换成特效就相当完美叻！ &lt;/p&gt;
&lt;p&gt;先说几个细节：&lt;br /&gt;
　　&lt;br /&gt;
1，好莱坞影片里常见的mac笔记本，这次完全没有看到，VAIO则至少清晰的出现了5次，主角之一的科学家和白宫官员都用sony笔记本，此外加长林肯在主角逃出加州过程中的表现很明显的说明福特也是出过钱的。&lt;br /&gt;
　　&lt;br /&gt;
2，黄石公园的超级火山喷发让华盛顿特区进入核冬天，我感觉这个不太靠谱，要吸收大部分太阳辐射的能量，浮尘的直径至少要能小于远红外的波长，也就是13微米，核爆可以做到，而火山灰貌似达不到这个程度。&lt;br /&gt;
　　&lt;br /&gt;
3，通过各国领袖在方舟上进行的表决，我们可以发现：3亿人口的美国独占了一艘船，13亿中国人翰1亿多日本人还有可以忽略的俄国人共用另一艘船，5亿人口的EU占了第三艘船——棒子和阿三明显被抛弃了。而非洲由于陆地上升，反而损失相对较小，重新成为人类发源地，这充分说明出来混迟早要还 XD&lt;br /&gt;
　　&lt;br /&gt;
4，US军方感叹：选中国没错，只有中国能完成这样的工程。其实中国的优势不光是那些继承能吃苦、能战斗、能奉献的优良传统，一切听党指挥的工人兄弟——登上方舟的船票价格是10亿欧元，按照&lt;a target=&quot;_blank&quot; href=&quot;http://www.forbes.com/2009/03/11/worlds-richest-people-billionaires-2009-billionaires_land.html&quot;&gt;09年的水平&lt;/a&gt;，全球只有790多位大爷买得起，就算2012年经济景气了，筹集资金不过万把亿，这点小钱其实单凭我们帝国自己就可以埋单嘛。&lt;/p&gt;
&lt;p&gt;然后是背景。&lt;/p&gt;
&lt;p&gt;《2012》的背景是玛雅预言，这个预言并非宗教产物，而是由一个非常华丽的历法计算出的，玛雅的历法是世界上最精确的历法之一，比儒略历早600年以上，玛雅人日常使用的历法由一个260天历和一个365天历共同组成，前者称作Tzolkin，以13天为一个单位，称作Trecena，20个Trecena为一年；后者称作Haab，以20天为一个单位，称作Veintena，一年为18个Veintena加上5个Wayeb日，这两套历法结合起来给每天起名字，可以保证18980天（也就是52个Haab年）没有重复，超出那个时候人的平均寿命，由于这套历法只适合计日而不适合计年，玛雅人在记录历史时会使用数列来表示年份，通常包含5位，换算成天的方式是：a*18*20^3 + b*18*20^2 + c*18*20 + d*20 + e，其中最高位叫作Baktun，计数方式是13,1,2,3&amp;#8230;,11,12，所以玛雅的创世日记为13.0.0.0.0，按照GMT换算法，下一个13.0.0.0.0就是2012年12月21日。&lt;/p&gt;
&lt;p&gt;这里有一个用python写的玛雅历换算工具：&lt;a target=&quot;_blank&quot; href=&quot;http://www.pauahtun.org/Calendar/tools.html&quot;&gt;http://www.pauahtun.org/Calendar/tools.html&lt;/a&gt; ，比如我的生日1984年6月14日，在玛雅历里是12.18.11.1.1（妈的怎么这么多1呀！难道是在预言我的宿命就是单身么！）……在Tzolkin历里是第一个月：Imix （我靠好强大，Tzolkin的260天貌似就是指一个分娩周期），在Haab历里是第4个月：Sotz （哎可惜，要是生在那个5天的Wayeb月就能获得优越感了……）&lt;/p&gt;
&lt;p&gt;这个玛雅历中的特殊年份在西方人眼里可能还有两种意义，一个是著名的占星术士诺查丹玛斯（Nostradamus），他预言1999年是世界末日，而据说他那些已经验证过的其他预言，最大误差不超过13年，正好是2012。另一个原因是基督教，众人皆知旧约的创世纪（Genesis）里有诺亚方舟的故事，但这里面有一个很诡异的地方，根据我常用的KJV版（King James钦定版），Genesis 7:4的原文是：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;For yet seven days, and I will cause it to rain upon the earth forty days and forty nights; &lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;以God的第一人称提到了“七天”。然后问题出在《彼得后书》（Second Epistle of Peter），3:5到3:7的原文：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;For this they willingly are ignorant of, that by the word of God the heavens were of old, and the earth standing out of the water and in the water&lt;/p&gt;
&lt;p&gt;Whereby the world that then was, being overflowed with water, perished&lt;/p&gt;
&lt;p&gt;But the heavens and the earth, which are now, by the same word are kept in store, reserved unto fire against the day of judgment and perdition of ungodly men.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;大致上就是说世界是按照神的指令，从水中诞生，神要毁灭世界时，就会让水重新覆盖世界，目前天和地还根据当初的指令继续存在，直到开始审判和毁灭那些不信神的人的日子，会“reserved unto fire”，沉沦到火焰之中&lt;/p&gt;
&lt;p&gt;很明显是一段警告，而下一段3:8的原文是：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;But, beloved, be not ignorant of this one thing, that one day is with the Lord as a thousand years, and a thousand years as one day.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;不要忘记一件事：主视一日如千年，视千年如一日。&lt;/p&gt;
&lt;p&gt;我们都知道神在第7天不愿意加班，那么第6天就该开始毁灭世界了罢，&lt;del datetime=&quot;2009-11-13T20:27:53+00:00&quot;&gt;否则项目就要延期了&lt;/del&gt;，在此之前有5天也就是5000年时间，而很多历史研究表明诺亚那次的大洪水发生在公元前3000年左右…… &lt;/p&gt;
&lt;p&gt;其实说到神的创世和对人类的惩罚，我很难不联想到最近玩的&lt;a  target=&quot;_blank&quot; href=&quot;http://www.limboy.com/2009/01/20/dragon_age_is_the_song_of_ice_and_fire/&quot;&gt;Dragon Age: Origins&lt;/a&gt;，这个游戏的历史设定很有趣：只有一个创世神，称作Maker，他最先创造的世界叫fade，居民叫spirit，这个世界的形态不定，受意识影响，居民也很强大，却没有想象力和创造力，Maker不满意，又创造了另一个物质世界，它没有fade那么“美好”，有固定的形态和法则，却可以在其居民（人类精灵矮人）的努力下不断发展。物质世界和fade世界中间有veil阻挡，不能随意穿越，但是物质世界的生物可以通过做梦的形式，让自己的精神进入fade，Maker还在fade里建造了自己的住所黄金之城（the Golden City），也就是天堂，物质世界里信神的生物死后可以在这里跟主子一起享福。fade里的spirit有善良的也有邪恶，邪恶的就是恶魔，他们嫉妒物质世界的生物，诱惑那些做梦的人，于是人类学会了魔法，建立了一统天下的魔法帝国Tevinter，帝国的法师（Magister）越来越自傲，欲望越来越大，终于有一天他们把手伸向天堂，企图以肉身进入黄金之城，这个行为导致神离开了世界，抛弃了自己的造物，黄金之城堕落为黑城（the Black City），不再有天堂接纳死去的凡人，他们的灵魂只能永远在fade游荡。而那些法师被诅咒转变成了怪物，当他们回到物质世界时，差点毁灭了帝国，历史上称作第一次枯潮（Darkspawn）&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;The mages had sought to usurp Heaven, but instead they destroyed it.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;相比起遮遮掩掩模棱两可的基督教文献，奇幻游戏的故事要丰满的多，寓意也更明显。所以我觉得很适合作为一篇灾难片评论的结尾。&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/333038666/dexteryy/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dexteryy/~6072067/333038666/4180063/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/dexteryy/333038666/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/dexteryy/333038666/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;fsflare&quot;&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=4e1c4f2cfdceae22d9204dd886f8749d&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=4e1c4f2cfdceae22d9204dd886f8749d&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=e4cda5239d587ec0ee9c86ce2e7d3efe&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=e4cda5239d587ec0ee9c86ce2e7d3efe&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=9cd5ce96c3031ae9f228b5c232eaf0c6&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=9cd5ce96c3031ae9f228b5c232eaf0c6&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.limboy.com/2009/11/14/mayan2012/feed/</wfw:commentRss><description>《2012》最大的缺点还是世界毁灭的太快了，悬念做的不够，我更喜欢cloverfield那种调调，此外视觉效果还是有点单调，这年头只靠一个卷起肯尼迪航母的海啸背景已经唬不住人了，观众眼里尽是绿幕。不过要求太高也是不厚道的，总体来说，《2012》只要把那些传统的美式英雄主义和小范围人道主义的部分剪掉换成特效就相当完美叻！ 
先说几个细节：
　　
1，好莱坞影片里常见的mac笔记本，这次完全没有看到，VAIO则至少清晰的出现了5次，主角之一的科学家和白宫官员都用sony笔记本，此外加长林肯在主角逃出加州过程中的表现很明显的说明福特也是出过钱的。
&lt;span class=&quot;readmore&quot;&gt;&lt;a href=&quot;http://www.limboy.com/2009/11/14/mayan2012/&quot; title=&quot;我爱灾难片！讨论一下《2012》的细节和背景&quot; target=&quot;_blank&quot;&gt;阅读全文——共3050字&lt;/a&gt;&lt;/span&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/333038666/dexteryy/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dexteryy/~6072067/333038666/4180063/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/dexteryy/333038666/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/dexteryy/333038666/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;fsflare&quot;&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=4e1c4f2cfdceae22d9204dd886f8749d&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=4e1c4f2cfdceae22d9204dd886f8749d&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=e4cda5239d587ec0ee9c86ce2e7d3efe&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=e4cda5239d587ec0ee9c86ce2e7d3efe&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=9cd5ce96c3031ae9f228b5c232eaf0c6&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=9cd5ce96c3031ae9f228b5c232eaf0c6&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/p&gt;</description><category>SF/F</category><category>游戏</category><category>电影</category><pubDate>Sat, 14 Nov 2009 08:05:11 +0800</pubDate><author>dexter_yy</author><comments>http://www.limboy.com/2009/11/14/mayan2012/#comments</comments><guid isPermaLink="false">http://www.limboy.com/2009/11/14/mayan2012/</guid><dc:creator>dexter_yy</dc:creator><fs:srclink>http://www.limboy.com/2009/11/14/mayan2012/</fs:srclink><fs:srcfeed>http://www.limboy.com/feed/rss2/</fs:srcfeed><fs:itemid>feedsky/dexteryy/~6072067/333038666/4180063</fs:itemid></item><item><title>我觉得做NARUTO TV动画的人应该切腹</title><link>http://item.feedsky.com/~feedsky/dexteryy/~6072067/333038667/4180063/1/item.html</link><content:encoded>&lt;p&gt;&lt;a href='http://www.limboy.com/2009/09/20/naruto-tv-sucks/rock_leepng/' rel='attachment wp-att-244' title='rock_lee.png'&gt;&lt;img src='http://www.limboy.com/wp-content/uploads/2009/09/rock_lee.png' alt='rock_lee.png' style=&quot;margin:0 10px;float:left;width:150px;border:0&quot; /&gt;&lt;/a&gt;虽然早在火影沦为四大民工漫之首的若干年前，我就已经没怎么追了（漫画偶尔看看），但是早期几个章节的tv动画（比如卡卡西vs再不斩，中忍考试李洛克vs我爱罗）曾经让我非常非常感动，我不是指那些纠结的人性和搅基的情感之类的玩意让我感动，是指镜头变化和速度感都非常华丽的打斗场面，最近的一部能让我有类似热血感觉的作品是BONES的SOUL EATER。&lt;/p&gt;
&lt;p&gt;那段时期大概也是西尾铁也和他手下那帮超强的作画人员还在全力参与的阶段，西尾铁也这个人在国内不算出名，但是他参与过原画的几乎全是神作：《攻壳机动队SAC GIG》，《交响诗篇eureka7》，《精灵守护者》，《东之伊甸》（刚完结，前段时间最喜欢的），押井守最近的剧场动画《空中杀手》（The Sky Crawlers）的人设也是他，主要人物的脸和身体就像火影里一样圆润……&lt;/p&gt;
&lt;div style=&quot;clear:left;&quot;&gt;
&lt;object width=&quot;420&quot; height=&quot;363&quot;&gt;
&lt;param name=&quot;movie&quot; value=&quot;http://www.tudou.com/v/LQ3MzZhB62o&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;wmode&quot; value=&quot;opaque&quot;&gt;&lt;/param&gt;
&lt;p&gt;&lt;embed src=&quot;http://www.tudou.com/v/LQ3MzZhB62o&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; wmode=&quot;opaque&quot; width=&quot;420&quot; height=&quot;363&quot;&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;p&gt;&lt;em&gt;Rock Lee vs 我爱罗的一个MAD版&lt;/em&gt;&lt;/p&gt;
&lt;object width=&quot;420&quot; height=&quot;363&quot;&gt;
&lt;param name=&quot;movie&quot; value=&quot;http://www.tudou.com/v/qKYKfAmdlfE&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;wmode&quot; value=&quot;opaque&quot;&gt;&lt;/param&gt;
&lt;p&gt;&lt;embed src=&quot;http://www.tudou.com/v/qKYKfAmdlfE&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; wmode=&quot;opaque&quot; width=&quot;420&quot; height=&quot;363&quot;&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;p&gt;&lt;em&gt;精灵守护者里的第一场打斗片段&lt;/em&gt;&lt;/p&gt;
&lt;object width=&quot;420&quot; height=&quot;363&quot;&gt;
&lt;param name=&quot;movie&quot; value=&quot;http://www.tudou.com/v/n691HdFt-ak&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;wmode&quot; value=&quot;opaque&quot;&gt;&lt;/param&gt;
&lt;p&gt;&lt;embed src=&quot;http://www.tudou.com/v/n691HdFt-ak&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; wmode=&quot;opaque&quot; width=&quot;420&quot; height=&quot;363&quot;&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;p&gt;&lt;em&gt;精灵守护者里评价最高的打斗片段&lt;/em&gt;
&lt;/div&gt;
&lt;p&gt;西尾铁也并不是一个人在战斗，他的背后是日本最强（在西方人眼里，对我来说只能算“之一”，BONES，MADHOUSE等公司也能保证必出精品）的动画公司IG，跟他同级别能保证作品质量的强者还有：沖浦啓之（罗德斯岛战记原画，MEMORIES原画，攻壳GIS作画监督，COWBOY BEBOP剧场版OP分镜，演出和原画），黄瀬和哉（天空战记作画监督，EVA TV/旧剧场版/新剧场版作画监督，浪客剑心原画，攻壳SAC SSS原画），此三人合称IG作画三大神。他们参与过的神作不止这些，我只拿自己熟悉的举例。&lt;/p&gt;
&lt;object width=&quot;420&quot; height=&quot;363&quot;&gt;
&lt;param name=&quot;movie&quot; value=&quot;http://www.tudou.com/v/cX7LR76ik2g&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;wmode&quot; value=&quot;opaque&quot;&gt;&lt;/param&gt;
&lt;p&gt;&lt;embed src=&quot;http://www.tudou.com/v/cX7LR76ik2g&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; wmode=&quot;opaque&quot; width=&quot;420&quot; height=&quot;363&quot;&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;p&gt;&lt;em&gt;Cowboy Bebop剧场版天国之扉的op《Ask DNA》，菅野洋子作曲&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;实际上早期的火影创作团队简直是精英云集，比如音乐是由天才作曲家増田俊郎（他为《虫师》创作的两张碟可能更有名）和擅长日本民俗乐器的摇滚乐队“六三四Musashi”（演奏尺八的那位：&lt;a href=&quot;http://www.douban.com/subject/2213500/&quot; target=&quot;_blank&quot;&gt;http://www.douban.com/subject/2213500/&lt;/a&gt;）合作的，包括前三张OST专辑，我最喜欢其中的摇滚部分，比如OST1里的Need To Be Strong和OST3里的自来也主题。&lt;/p&gt;
&lt;object width=&quot;420&quot; height=&quot;30&quot;&gt;
&lt;param name=&quot;movie&quot; value=&quot;http://www.tudou.com/v/1aV_pEi2ix4&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;wmode&quot; value=&quot;opaque&quot;&gt;&lt;/param&gt;
&lt;p&gt;&lt;embed src=&quot;http://www.tudou.com/v/1aV_pEi2ix4&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; wmode=&quot;opaque&quot; width=&quot;420&quot; height=&quot;30&quot;&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;p&gt;&lt;em&gt;自来也主题曲&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;但是像西尾这样的人才不可能一直把精力花在柯南般的没完没了的国民动画上，再加上投入的成本大幅降低，为避免进度赶上漫画而搞出的大量脑残般的回忆段落和原创剧情，早期那些热血的动作场面和CG再也看不到了……后期的火影tv版给我的最深刻印象是：主角们在树和树之间跳跃可以花上几十分钟的片长，其滞空时间和思维活动的复杂深邃，远远胜过当年灌篮高手在角色跳投或抢篮板过程中让观众发表五分钟评论的场面。&lt;/p&gt;
&lt;p&gt;昨天晚上&lt;del&gt;哥很寂寞&lt;/del&gt;，一边看书一边在台式机的chrome上挂&lt;a href=&quot;http://douwan.tudou.com&quot; target=&quot;_blank&quot;&gt;豆丸&lt;/a&gt;，无意中发现火影最新的OP《萤之光》很好听（可能是因为结合了画面才好听，生物股长这个乐队在红白歌会里看到过，没什么特殊印象），在豆丸里切换了几个相关视频，发现一个MAD版本（MAD即MADMOVIE，这个词起源很宅，反正在日本动漫社区里指二次创作影像），大部分画面是从PS3游戏&lt;a href=&quot;http://ps3.ign.com/articles/867/867121p1.html&quot; target=&quot;_blank&quot;&gt;Naruto: Ultimate Ninja Storm&lt;/a&gt;里剪辑出来的，身为一个没买过任何次世代主机被别人主动赠与X360长达两周时间连GTA4都没通关的坚定的久经考验的PC玩家，当时我就震精了……靠这战斗画面太华丽了口牙！速度感满分（比如阿斯玛的斩击，日向雏田的八卦六十四掌），还表现出了漫画里没出现过传说中的技能（四代火影的时空忍术，效果确实像金色闪光）。相比之下现在的动画究竟算什么水平口牙！为什么差距这么大，难道就因为&lt;del&gt;南梦宫更有钱么&lt;/del&gt;（纠正……好像是开发.hack的那个工作室搞的），关键还是认真的充满爱的态度罢！&lt;/p&gt;
&lt;p&gt;视频来源是niconico，土豆上只能找到三部，基本上所有人物都出场了，优酷上搜不到：&lt;/p&gt;
&lt;object width=&quot;420&quot; height=&quot;363&quot;&gt;
&lt;param name=&quot;movie&quot; value=&quot;http://www.tudou.com/v/orxR5UdpLQE&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;wmode&quot; value=&quot;opaque&quot;&gt;&lt;/param&gt;
&lt;p&gt;&lt;embed src=&quot;http://www.tudou.com/v/orxR5UdpLQE&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; wmode=&quot;opaque&quot; width=&quot;420&quot; height=&quot;363&quot;&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;p&gt;&lt;br/&gt;&lt;/p&gt;
&lt;object width=&quot;420&quot; height=&quot;363&quot;&gt;
&lt;param name=&quot;movie&quot; value=&quot;http://www.tudou.com/v/pbnBfT4a25Y&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;wmode&quot; value=&quot;opaque&quot;&gt;&lt;/param&gt;
&lt;p&gt;&lt;embed src=&quot;http://www.tudou.com/v/pbnBfT4a25Y&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; wmode=&quot;opaque&quot; width=&quot;420&quot; height=&quot;363&quot;&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;p&gt;&lt;br/&gt;&lt;/p&gt;
&lt;object width=&quot;420&quot; height=&quot;363&quot;&gt;
&lt;param name=&quot;movie&quot; value=&quot;http://www.tudou.com/v/tfJv8DJeNHs&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;wmode&quot; value=&quot;opaque&quot;&gt;&lt;/param&gt;
&lt;p&gt;&lt;embed src=&quot;http://www.tudou.com/v/tfJv8DJeNHs&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; wmode=&quot;opaque&quot; width=&quot;420&quot; height=&quot;363&quot;&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;p&gt;然则画面实在是太模糊了，土豆的MPS系统应该不至于把好片源压成这个鬼样子，因此，这就是我写这篇blog的目的叻！虽然你看完之后可能以为我在发软文……咳……但是……人家没有骗你～人家真的就是想知道这个视频的出处地址或者其他清晰版本嘛～～跪求！（我把别人以前共享的niconico帐号给忘了T___T）&lt;/p&gt;
&lt;p&gt;P.S. 最后我要指出……在写这篇blog的时间内很轻松的搜出以上关键词比较特殊的视频，感觉土豆自己研发的搜索系统还是蛮好用的喔活活活活……唯一失败的是soul eater的打斗片段……如果在youtube上搜索“Mifune vs Blackstar”，一定是大把的两三分钟左右的片段，而国内视频用户上传的几乎全是25分钟左右的完整动画……汗……&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/333038667/dexteryy/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dexteryy/~6072067/333038667/4180063/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/dexteryy/333038667/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/dexteryy/333038667/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;fsflare&quot;&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=95d6cc0576e4438a69f80b14a112c8c9&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=95d6cc0576e4438a69f80b14a112c8c9&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=ed93a6586b8048eb001bb9b0c4028283&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=ed93a6586b8048eb001bb9b0c4028283&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=10e6c15bcda27b7735c1307dd48583f9&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=10e6c15bcda27b7735c1307dd48583f9&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.limboy.com/2009/09/20/naruto-tv-sucks/feed/</wfw:commentRss><description>虽然早在火影沦为四大民工漫之首的若干年前，我就已经没怎么追了（漫画偶尔看看），但是早期几个章节的tv动画（比如卡卡西vs再不斩，中忍考试李洛克vs我爱罗）曾经让我非常非常感动，我不是指那些纠结的人性和搅基的情感之类的玩意让我感动，是指镜头变化和速度感都非常华丽的打斗场面，最近的一部能让我有类似热血感觉的作品是BONES的SOUL EATER。
那段时期大概也是西尾铁也和他手下那帮超强的作画人员还在全力参与的阶段，西尾铁也这个人在国内不算出名，但是他参与过原画的几乎全是神作：《攻壳机动队SAC GIG》，《交响诗篇eureka7》，《精灵守护者》，《东之伊甸》（刚完结，前段时间最喜欢的），押井守最近的剧场动画《空中杀手》（The Sky Crawlers）的人设也是他，主要人物的脸和身体就像火影里一样圆润……
&lt;span class=&quot;readmore&quot;&gt;&lt;a href=&quot;http://www.limboy.com/2009/09/20/naruto-tv-sucks/&quot; title=&quot;我觉得做NARUTO TV动画的人应该切腹&quot; target=&quot;_blank&quot;&gt;阅读全文——共1858字&lt;/a&gt;&lt;/span&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/333038667/dexteryy/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dexteryy/~6072067/333038667/4180063/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/dexteryy/333038667/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/dexteryy/333038667/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;fsflare&quot;&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=95d6cc0576e4438a69f80b14a112c8c9&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=95d6cc0576e4438a69f80b14a112c8c9&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=ed93a6586b8048eb001bb9b0c4028283&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=ed93a6586b8048eb001bb9b0c4028283&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=10e6c15bcda27b7735c1307dd48583f9&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=10e6c15bcda27b7735c1307dd48583f9&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/p&gt;</description><category>音乐</category><category>动漫</category><category>日漫</category><category>游戏</category><category>代码</category><category>土豆网</category><pubDate>Sun, 20 Sep 2009 23:45:48 +0800</pubDate><author>dexter_yy</author><comments>http://www.limboy.com/2009/09/20/naruto-tv-sucks/#comments</comments><guid isPermaLink="false">http://www.limboy.com/2009/09/20/naruto-tv-sucks/</guid><dc:creator>dexter_yy</dc:creator><fs:srclink>http://www.limboy.com/2009/09/20/naruto-tv-sucks/</fs:srclink><fs:srcfeed>http://www.limboy.com/feed/rss2/</fs:srcfeed><fs:itemid>feedsky/dexteryy/~6072067/333038667/4180063</fs:itemid></item><item><title>[内销转出口]寻找最好的JavaScript面向对象模式和封装结构</title><link>http://item.feedsky.com/~feedsky/dexteryy/~6072067/333038668/4180063/1/item.html</link><content:encoded>&lt;p&gt;好久不见，这次发的不是笔记啦，是我在公司内部的前端wiki上更新的文档……这个抛弃所有wiki语法要求用户直接手写语义化html用json配置导航的wiki排版相当漂亮，让我这样的懒人也有了码字的欲望，发起人小麦实在系功德无量……&lt;/p&gt;
&lt;p&gt;&lt;a href='http://www.limboy.com/wp-content/uploads/2009/09/picture-2.png' title='picture-2.png' target=&quot;_blank&quot;&gt;&lt;img src='http://www.limboy.com/wp-content/uploads/2009/09/picture-2.png' alt='picture-2.png' style=&quot;width:200px;margin:5px;&quot; /&gt;&lt;/a&gt;&lt;a href='http://www.limboy.com/wp-content/uploads/2009/09/picture-3.png'  target=&quot;_blank&quot;&gt;&lt;img src='http://www.limboy.com/wp-content/uploads/2009/09/picture-3.png' alt='picture-3.png'  style=&quot;width:200px;margin:5px;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这篇文章去年就准备写，想用循序渐进的形式推演出一个&lt;a href=&quot;http://www.yuiblog.com/blog/2007/06/12/module-pattern/&quot; target=&quot;_blank&quot;&gt;Module Pattern&lt;/a&gt;的最佳实践，不过想法越多，归纳总结表达出来的成本就越高，所以一直拖延……这次发的文档是一个简化版，去掉了各式各样乱七八糟的写法，只包含几个常用的，说明文字也不多主要看代码-__-b……初衷是作为给土豆前端team里新来的同事看的提纲（对了由于某人叛逃到产品设计部门，现在又空出一个名额，有兴趣的同学抓紧时间&lt;a href=&quot;http://www.mikkolee.com/256&quot; target=&quot;_blank&quot;&gt;投简历&lt;/a&gt;，这次是魔都总部的职位，不是成都的），所以要解释一下，文档中提到的&lt;var&gt;TUI&lt;/var&gt;是一个js库（名字是很俗，不过我上次发现某年纪一大把的人也跟我&lt;a href=&quot;http://blog.digg.com/?p=621&quot; target=&quot;_blank&quot;&gt;一样俗&lt;/a&gt;），土豆一直采用双库并行（不要看成双工并行…）的形式，在紧跟开源社区发展的同时自己掌控所有环节和基础架构，没有使用jQuery UI和那套基于DOM的插件结构，而jQuery自己几乎不提供OOP工具（这是好事），实际上自己创建这类工具非常简单快捷，相关的代码我提取了一下直接帖在末尾了，仅供参考。&lt;/p&gt;
&lt;p&gt;另外，为了符合Nicholas Zakas在最近的&lt;a href=&quot;http://www.yuiblog.com/blog/2009/09/17/video-bayjax-sept-09/&quot; target=&quot;_blank&quot;&gt;国际会议&lt;/a&gt;上传达的精神，我修改了若干变量名跟他&lt;a href=&quot;http://www.slideshare.net/nzakas/scalable-javascript-application-architecture&quot; target=&quot;_blank&quot;&gt;ppt&lt;/a&gt;里的例子保持一致——这件事教育我们，平时多上slideshow.net对保持先进性是多么重要。&lt;/p&gt;
&lt;h2&gt;Tudou&amp;#8217;s JavaScript Guideline &amp;#8212; OOP and Module&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;介绍土豆在面向对象和模块化设计方面的工具和实践&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Don&amp;#8217;t Repeat Yourself.&amp;#8221; (DRY)&lt;/p&gt;
&lt;p&gt;&amp;#8220;Rather than construction, programming is more like gardening.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;Quote from: Andy Hunt and Dave Thomas, The Pragmatic Programmer&lt;/cite&gt;
			&lt;/p&gt;&lt;/blockquote&gt;
&lt;div class=&quot;section&quot;&gt;
&lt;h2&gt;索引&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;#sec-1&quot;&gt;创建类，继承，混入，实例化&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#sec-2&quot;&gt;模块化 Module Pattern&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#sec-3&quot;&gt;沙盒，模块间的解耦，与外部通信&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#sec-4&quot;&gt;按需加载模块 On-demand Lazy Load&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#sec-5&quot;&gt;总结&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;sec-1&quot;&gt;
&lt;h2&gt;创建类，继承，混入，实例化&lt;/h2&gt;
&lt;p&gt;我们依赖的核心工具是&lt;var&gt;TUI.clone&lt;/var&gt;&lt;/p&gt;
&lt;h3&gt;简洁的，支持私有属性，不需要prototype的写法：&lt;/h3&gt;
&lt;p&gt;JS是基于原型而不是基于类的面向对象语言，JS是“无类型”的，类是仿造出来的概念，实质只有对象。&lt;br /&gt;
&lt;var&gt;new&lt;/var&gt;只是用来复制对象，构造函数只是用来返回对象, 两者对JS的OOP来说并不是必须的。&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;dog&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;options&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;privateAttr&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//私有属性&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;private_method&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(){}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//私有方法&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;option&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;options&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//实例属性&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;method1&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(){}&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;xiaobai&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;dog&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;({})&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;对私有属性/方法的支持比较好&lt;/li&gt;
&lt;li&gt;最适合单例模式(Singleton)&lt;/li&gt;
&lt;li&gt;延迟单例的初始化，提高页面初始化的速度&lt;/li&gt;
&lt;li&gt;缺点：对继承的支持不佳&lt;/li&gt;
&lt;li&gt;缺点：在需要频繁创建大量对象，而方法非常多的场合，浪费资源（因为每个实例的方法指向的都是不同的函数对象，每次实例化都要重新生成所有函数）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在第2个缺点的场合，传统的prototype写法效率更高，支持继承，但是代码分散，不易读，TUI.clone提供了更好的写法——&lt;/p&gt;
&lt;h3&gt;传统的、支持继承的、仿Ruby风格的Class写法：&lt;/h3&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//创建新类&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Dog&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;newClass&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;({&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;initialize&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;options&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//构造函数&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;option&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;options&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Olive;&quot;&gt;})&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//实例化&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;xiaobai&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Dog&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//继承&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Cat&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;newClass&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;dog&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//只允许单继承&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;mixin&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//混入其他方法&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;initialize&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;options&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;superClass&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;call&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;arguments&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//调用父类构造函数&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Olive;&quot;&gt;})&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;风格类似&lt;var&gt;mootools&lt;/var&gt;的&lt;var&gt;new Class&lt;/var&gt;&lt;/li&gt;
&lt;li&gt;&lt;var&gt;TUI.newClass&lt;/var&gt;只是&lt;var&gt;TUI.clone&lt;/var&gt;的封装&lt;/li&gt;
&lt;li&gt;&lt;var&gt;mixin&lt;/var&gt;相当于在构造函数里&lt;var&gt;$.extend(this.prototype, TUI.event)&lt;/var&gt;&lt;/li&gt;
&lt;li&gt;实际上应该少用继承，多用mixin和组合模式，后者更符合JS的特点&lt;/li&gt;
&lt;li&gt;缺点：封装效果不好，不支持私有属性和方法&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;var&gt;TUI.clone&lt;/var&gt;既可以复制构造函数的&lt;var&gt;prototype&lt;/var&gt;，也可以直接复制对象（跟jQuery.extend不同，依靠原型继承），所以利用它直接生成实例。&lt;/p&gt;
&lt;p&gt;这样可以在不引入&lt;var&gt;prototype&lt;/var&gt;和语法糖的情况下把第一种方法改造的同样高效——&lt;/p&gt;
&lt;h3&gt;对象克隆工厂的写法：&lt;/h3&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;dog&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;jQuery&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//传入需要访问的全局命名空间&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;xxx&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//不作为状态的私有属性&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;private_method&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(){&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//私有方法&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;alert&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;option&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;PublicObj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//相当于prototype对象&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;method1&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(){&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;private_method&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;call&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//访问私有方法, 共享状态&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;options&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//对象工厂&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;obj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;clone&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;PublicObj&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//克隆&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;obj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;aption&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;options&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//构造函数中的常规任务&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;extend&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;obj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;cat&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//mixin其他对象的方法&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;obj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Olive;&quot;&gt;})(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;jQuery&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;xiaobai&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;dog&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;({})&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;效率高，封装好，耦合少易于修改和扩展&lt;/li&gt;
&lt;li&gt;缺点：私有属性不能作为实例状态&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;把以上第一种方法和第三种方法结合互补，为module模式——&lt;/p&gt;
&lt;/p&gt;&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;sec-2&quot;&gt;
&lt;h2&gt;模块化 Module Pattern&lt;/h2&gt;
&lt;p&gt;核心工具是&lt;var&gt;TUI.module&lt;/var&gt;&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;widget&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;dog&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;$, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//除了库的命名空间，尽量不访问全局变量&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//所有模块代码都封闭在这个区域内&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;xxx&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//不作为状态的私有属性&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;private_method&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(){&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//私有方法&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;alert&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;option&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;privateObj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//可作为状态的私有属性&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;privateAttr&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//读写私有属性的方法，只能在内部使用&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;private&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;objectId&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;private&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;objectId&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;dog&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;newClass&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;parentClass&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;mixin&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//混入其他方法&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;initialize&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;options&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;superClass&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;call&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;arguments&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//访问父类构造函数&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;,&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;public_method&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(){&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; + &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;privateAttr&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;call&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;c&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//访问私有属性&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;private_method&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;call&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//访问私有方法&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;})&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//工厂方法，给别人使用的接口&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;options&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;obj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;dog&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;options&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//实例加上唯一的ID，类似Ruby，注意只用+new Date()不能避免重复&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;obj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;objectId&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;tui_object&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; + &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; +&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;Date&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;10000&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; + &lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;Math&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;random&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;10000&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;obj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Olive;&quot;&gt;})(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;jQuery&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;为了便于理解，以上代码是集中在一起的简单实现，进一步封装之后，有些步骤可以省略：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;var&gt;objectId&lt;/var&gt;的初始化已经由&lt;var&gt;TUI.clone&lt;/var&gt;实现&lt;/li&gt;
&lt;li&gt;&lt;var&gt;privateAttr&lt;/var&gt;方法和私有属性map由&lt;var&gt;TUI.newModule&lt;/var&gt;实现&lt;/li&gt;
&lt;li&gt;&lt;var&gt;TUI.newModule&lt;/var&gt;是&lt;var&gt;TUI.namespace&lt;/var&gt;和&lt;var&gt;TUI.module.create&lt;/var&gt;的封装&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;基于 TUI.clone 和 TUI.newModule 的写法&lt;/h3&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;newModule&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;TUI.widget.dog&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;sandbox&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, $, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;dog&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;newClass&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;parentClass&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;mixin&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;sandbox&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;sandbox&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//有sandbox属性传入时，attr属性会被转化为外部无法访问的私有属性&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;attr&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//初始化私有属性的默认值&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;,&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;2&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;,&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;initialize&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;options&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;superClass&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;call&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;arguments&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//访问父类构造函数&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;,&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;public_method&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(){&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;attr&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;sandbox&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; + &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;attr&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;sandbox&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;c&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//访问私有属性，通过sandbox参数来验证身份&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;})&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;options&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;obj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;dog&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;options&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;obj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;jQuery&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;])&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;xiaobai&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;widget&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;dog&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;({})&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;console&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;log&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;xiaobai&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;sandbox&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//undefined&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;console&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;log&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;xiaobai&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;attr&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//undefined&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;这里的&lt;var&gt;sandbox&lt;/var&gt;其实还可以做很多事——&lt;/p&gt;
&lt;/p&gt;&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;sec-3&quot;&gt;
&lt;h2&gt;沙盒，模块间的解耦，与外部通信&lt;/h2&gt;
&lt;p&gt;&lt;var&gt;TUI.module.create&lt;/var&gt;方法其实来自&lt;var&gt;TUI.moduleClass&lt;/var&gt;的实例，其他独立应用同样可以继承&lt;var&gt;TUI.moduleClass&lt;/var&gt;，构造自己的沙盒对象&lt;/var&gt;&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Douwan&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;newClass&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;moduleClass&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;notify&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;clone&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//事件在这里可以理解为通信器&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;initialize&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;options&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;me&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;_sandbox&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;notify&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;notify&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//把通信器指向自己，避免跟全局的事件命名冲突&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//给沙盒增加ajax方法，让module内的代码通过沙盒来通信，屏蔽url路径和响应格式之类的细节&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;http://www.tudou.com/path/service.action&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;_sandbox&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;getJSON&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;param&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;fn&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//模块只需要传url参数&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;me&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;getJSON&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;jsondata&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;me&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;toJSON&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;fn&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;jsondata&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//无论返回格式是什么，都传json给模块&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;})&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;,&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;toJSON&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(){}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;,&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;getJSON&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(){}&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Olive;&quot;&gt;})&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;让应用的不同模块之间解耦，避免在模块内部直接使用外部的命名（除了库的api）&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;douwanObj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Douwan&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;({})&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;module1&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;douwanObj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;module&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;create&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;sandbox&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, $, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;sandbox&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;getJSON&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;({&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;iid&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;10000&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//通过通信器调用module2.update&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;sondbox&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;notify&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;fire&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;module2-update&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;])&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;})&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;JQuery&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;])&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;module2&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;douwanObj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;module&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;create&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;sandbox&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, $, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;obj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;update&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(){}&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//注册一个update消息的接收器&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;sondbox&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;notify&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;bind&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;module2-update&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;obj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;update&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;})&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;obj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;JQuery&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;])&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;页面初始化时并不一定需要渲染或操作所有模块，因此有些模块的代码可以放在外部文件里，需要的时候再注入到页面里，类似&lt;var&gt;Python&lt;/var&gt;的&lt;var&gt;import&lt;/var&gt;&lt;/p&gt;
&lt;/p&gt;&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;sec-4&quot;&gt;
&lt;h2&gt;按需加载模块 On-demand Lazy Load&lt;/h2&gt;
&lt;p&gt;自动管理各个模块之间的依赖关系，根据代码内容加载不同的文件，这样做的成本太高，适合大型企业应用，我们的设计原则是“恰到好处”，所以通过文件名来管理模块&lt;/p&gt;
&lt;h3&gt;注册模块&lt;/h3&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;module&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;http://js.tudouui.com/js/fn/saleloader_10.js&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;domain&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;http://uidev.tudou.com&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;version&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;})&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;配置从url里获取，第二个配置参数是可选的，优先级更高，用于调试（指向开发环境）&lt;/li&gt;
&lt;li&gt;域名其实可以省略，js文件的域名通过&lt;var&gt;TUI.domain&lt;/var&gt;和autodomain.js脚本来自动配置&lt;/li&gt;
&lt;li&gt;版本号很重要，支持a_10.js/a.v10.js/a_v10.js等写法&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;使用模块&lt;/h3&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Blue;&quot;&gt;TUI&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;module&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;use&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;/fn/saleloader&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(){&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;adExtension&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;load&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//这个是saleloader.js内的方法，必须等js加载完后执行&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//这个区域是执行saleloader.js内代码的安全空间&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Olive;&quot;&gt;})&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;类似YUI3的&lt;var&gt;Y().use&lt;/var&gt;，省去了版本冲突之类无用的特性&lt;/li&gt;
&lt;li&gt;第一次use时会向页面里加载对应的script&lt;/li&gt;
&lt;li&gt;函数区域内的代码是异步执行的，会等到saleloader.js加载完后依次执行，如果已经加载过了，直接执行，类似&lt;var&gt;jQuery.ready&lt;/var&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;sec-5&quot;&gt;
&lt;h2&gt;总结&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;以上方法虽然有递进关系，但并不是要表示最后面的才是最好的方法&lt;/li&gt;
&lt;li&gt;最好的方法不是唯一的，要根据场合选择最适合的方法，以上方法都有适用场合&lt;/li&gt;
&lt;li&gt;本文档涉及到的API：&lt;var&gt;TUI.clone&lt;/var&gt;, &lt;var&gt;TUI.newClass&lt;/var&gt;, &lt;var&gt;TUI.moduleClass&lt;/var&gt;, &lt;var&gt;TUI.module.create&lt;/var&gt;, &lt;var&gt;TUI.newModule&lt;/var&gt;, &lt;var&gt;TUI.module.join&lt;/var&gt;, &lt;var&gt;TUI.module.use&lt;/var&gt;, &lt;var&gt;TUI.event&lt;/var&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;p&gt;=============开始帖源码的分割线=============&lt;/p&gt;
&lt;h3&gt;TUI.clone&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;
 /**
 * @public 继承一个类或复制一个对象
 * @param {object|function} oldone是需要继承的构造函数或需要复制的对象
 * @param {object|function} ex为函数时，是子类的构造函数，或者用来加工新对象
 * 		ex为对象时，为子类的方法, 其中initialize方法为构造函数, mixin为混入的超类
 * @return {object|function}
 */
clone: function(oldone, ex){
	var newobj,
		isClass = !oldone || $.isFunction(oldone), //继承操作
		constructorFn = ex &amp;#038;&amp;#038; !$.isFunction(ex) &amp;#038;&amp;#038; ex.initialize || ex; //子类构造函数
	if (!isClass) {
		newobj = function(){
			if(constructorFn)
				constructorFn.apply(this, arguments);
		};
		newobj.prototype = oldone;
		return new newobj();
	} else {
		var c = { _super: oldone, _sandbox: null, _attr: null, _default: null };
		newobj = function(){ //构造函数
			this.objectId = &quot;TUI-object&quot; + TUI.juid(); //实例的唯一ID, 注意不能只用当前毫秒数，连续生成实例时会重复！
			var p = c;
			this.superClass = p._super || Object; //在子类的构造函数中可以用this.superClass访问父类
			if (p._attr) {
				this.attr = p._attr; //绑定访问私有属性的方法
				if (p._default)
					this.attr(p._sandbox, p._default); //初始化私有属性的默认值
			}
			if(constructorFn) //执行构造函数的自定义部分
				constructorFn.apply(this, arguments);
		};
		if (oldone) { //需要继承
			newobj.prototype = arguments.callee.call(this, oldone.prototype); //原型继承
			$.extend(newobj.prototype, ex); //子类方法
		} else {
			newobj.prototype = ex;
		}
		if (ex.sandbox) { //为module内部定义的类提供相关方法
			c._sandbox = ex.sandbox;
			c._default = ex.attr;
			c._attr = function(sandbox, attrname, value){ //通过sandbox参数杜绝来自外部的访问
				return sandbox.attr.call(this, attrname, value);
			};
			delete ex.attr;
			delete ex.sandbox; //沙盒一定要删除，不能暴露出去
		}
		if (ex.mixin) { //混入其他接口的方法
			ex.mixin.unshift(newobj.prototype);
			$.extend.apply($, ex.mixin);
		}
		return newobj;
	}
},
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;TUI.moduleClass&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;
/**
 * 存放实例的私有状态
 * @private
 */
var privateAttr = {};
/**
 * module的抽象类
 * @note 可以继承到其他应用上, 构造独有的sandbox
 */
TUI.moduleClass = TUI.newClass({
	initialize: function(){
		this.notify = TUI.clone(TUI.event),
		this._sandbox.notify = this.notify; //被继承的时候，notify可以另外指向到别处
	},
	_sandbox: {
		attr: function(name, value){ //this指向调用它的实例
			if (typeof name === &quot;object&quot;) {
				privateAttr[this.objectId] = TUI.clone(name); //初始化私有变量的默认值
				return true;
			}
			var p = privateAttr[this.objectId];
			if (!p) //尽量在module里初始化
				p = privateAttr[this.objectId] = {};
			if (value)
				p[name] = value;
			return p[name];
		}
	},
	/**
	 * 创建一个模块，提供封闭的代码作用域和沙盒
	 * @public
	 * @param {function}
	 */
	create: function(wrap, args){
		var sandbox = TUI.clone(this._sandbox);
		args.unshift(sandbox);
		return wrap.apply(window, args);
	}
});

$.extend(TUI.module, new TUI.moduleClass());
&lt;/code&gt;&lt;/pre&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/333038668/dexteryy/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dexteryy/~6072067/333038668/4180063/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/dexteryy/333038668/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/dexteryy/333038668/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;fsflare&quot;&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=b1a1025a691eb6bd1ae7c12ee475f002&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=b1a1025a691eb6bd1ae7c12ee475f002&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=83d5a713ea441dc33fd6157cc8a73e45&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=83d5a713ea441dc33fd6157cc8a73e45&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=3ee6984b755ea324cdaae1f1594eeb55&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=3ee6984b755ea324cdaae1f1594eeb55&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.limboy.com/2009/09/20/tudou-javascript-oop-and-module-guideline/feed/</wfw:commentRss><description>好久不见，这次发的不是笔记啦，是我在公司内部的前端wiki上更新的文档……这个抛弃所有wiki语法要求用户直接手写语义化html用json配置导航的wiki排版相当漂亮，让我这样的懒人也有了码字的欲望，发起人小麦实在系功德无量……

这篇文章去年就准备写，想用循序渐进的形式推演出一个Module Pattern的最佳实践，不过想法越多，归纳总结表达出来的成本就越高，所以一直拖延……这次发的文档是一个简化版，去掉了各式各样乱七八糟的写法，只包含几个常用的，说明文字也不多主要看代码-__-b……初衷是作为给土豆前端team里新来的同事看的提纲（对了由于某人叛逃到产品设计部门，现在又空出一个名额，有兴趣的同学抓紧时间投简历，这次是魔都总部的职位，不是成都的），所以要解释一下，文档中提到的TUI是一个js库（名字是很俗，不过我上次发现某年纪一大把的人也跟我一样俗），土豆一直采用双库并行（不要看成双工并行…）的形式，在紧跟开源社区发展的同时自己掌控所有环节和基础架构，没有使用jQuery UI和那套基于DOM的插件结构，而jQuery自己几乎不提供OOP工具（这是好事），实际上自己创建这类工具非常简单快捷，相关的代码我提取了一下直接帖在末尾了，仅供参考。
&lt;span class=&quot;readmore&quot;&gt;&lt;a href=&quot;http://www.limboy.com/2009/09/20/tudou-javascript-oop-and-module-guideline/&quot; title=&quot;[内销转出口]寻找最好的JavaScript面向对象模式和封装结构&quot; target=&quot;_blank&quot;&gt;阅读全文——共7963字&lt;/a&gt;&lt;/span&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/333038668/dexteryy/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dexteryy/~6072067/333038668/4180063/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/dexteryy/333038668/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/dexteryy/333038668/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;fsflare&quot;&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=b1a1025a691eb6bd1ae7c12ee475f002&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=b1a1025a691eb6bd1ae7c12ee475f002&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=83d5a713ea441dc33fd6157cc8a73e45&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=83d5a713ea441dc33fd6157cc8a73e45&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=3ee6984b755ea324cdaae1f1594eeb55&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=3ee6984b755ea324cdaae1f1594eeb55&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/p&gt;</description><category>代码</category><category>土豆网</category><category>JavaScript</category><pubDate>Sun, 20 Sep 2009 13:02:22 +0800</pubDate><author>dexter_yy</author><comments>http://www.limboy.com/2009/09/20/tudou-javascript-oop-and-module-guideline/#comments</comments><guid isPermaLink="false">http://www.limboy.com/2009/09/20/tudou-javascript-oop-and-module-guideline/</guid><dc:creator>dexter_yy</dc:creator><fs:srclink>http://www.limboy.com/2009/09/20/tudou-javascript-oop-and-module-guideline/</fs:srclink><fs:srcfeed>http://www.limboy.com/feed/rss2/</fs:srcfeed><fs:itemid>feedsky/dexteryy/~6072067/333038668/4180063</fs:itemid></item><item><title>HTML5, CSS3, ES5…新的web标准和浏览器支持一览</title><link>http://item.feedsky.com/~feedsky/dexteryy/~6072067/333038669/4180063/1/item.html</link><content:encoded>&lt;p&gt;&lt;a href='http://www.limboy.com/2009/06/29/html5-css3-es5-support/bwjpg/' rel='attachment wp-att-239' title='bw.jpg'&gt;&lt;img src='http://www.limboy.com/wp-content/uploads/2009/06/bw.jpg' alt='bw.jpg' style=&quot;float:left;border:0;margin:0 10px 0 0;&quot; /&gt;&lt;/a&gt;好罢这篇本来是我私下做的笔记，我特别喜欢在&lt;a target=&quot;_blank&quot;  href=&quot;http://evernote.com/&quot;&gt;Evernote&lt;/a&gt;上做备忘的笔记，虽然上次看到&lt;a target=&quot;_blank&quot;  href=&quot;http://cache.tianya.cn/publicforum/content/english/1/121795.shtml&quot;&gt;漏屋老师的文章&lt;/a&gt;里说我现在的年龄才刚刚进入记忆力的巅峰期……但是我的自信心仍然屡受打击！比如跟别人讨论The Dark Knight里小丑在医院对检察官说了什么让他变成双面人，我一句对白都想不起来，还有big bang theory s2里penny玩age of conan时的人物名字是&amp;#8221;Queen Penelope&amp;#8221;，我看的时候印象很深，一个月后就连奥德赛都想不起来了。留份笔记总觉得心里踏实些……啊又跑题了&lt;/p&gt;
&lt;p&gt;本文整理了一些最重要（或者说人气比较高罢）的新标准，虽然它们多数还只是w3c的草案，离Recommendation级别还早，却已经成为新一轮浏览器大战中备受追捧的明星，开发者社区里也涌现出大量相关的demo和API封装，有些已经进入生产环境（比如google在iphone上实现的&lt;a target=&quot;_blank&quot;  href=&quot;http://www.wired.com/epicenter/2009/02/google-turns-to/&quot;&gt;gmail离线应用&lt;/a&gt;），其实我觉得如今的web领域里，从厂商私有技术转换成委员会标准再转换成通用技术产生杀手级应用的周期已经显著的加速了，是因为现在web application的需求太高了么…… &lt;strong&gt;UPDATE：&lt;/strong&gt;刚才在solidot发软文的时候我突然想明白怎么表述这个问题：其实现在很多浏览器厂商同时也是基于浏览器的应用开发者和web标准的制定者，就好像修筑舞台的工程师同时也是舞台上的演员和舞蹈动作的导演一样，所以google, mozilla, apple们都在不遗余力的实现那些有利于开发web应用的技术标准，即时它们还是W3C Working Draft，相比之下IE team就比较缺乏动力，果然计划经济缺乏活力亚XD……&lt;/p&gt;
&lt;p&gt;由于是源自笔记，对每个条目我只会列出称呼和语法特征，暂时没时间写详细的解释和可执行的示例，但是会给出相关的文档地址，除了列出已经支持该特性的浏览器，也会为不支持的浏览器提供替代/过渡的实现。&lt;/p&gt;
&lt;p&gt;===================废话结束的分割线=======================&lt;/p&gt;
&lt;h3&gt;CSS3 Media queries&lt;/h3&gt;
&lt;p&gt;对整个外链css文件和部分css代码使用的媒体类型侦测，人气高的原因显然是因为移动设备……&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;media&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=“&lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;all&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;and&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;orientation:portrait&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;)” &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;screen.css&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;text/css&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;@media&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;all&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;and&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; (min-color: 4) &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; ... &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;w3c标准：&lt;a target=&quot;_blank&quot;  href=&quot;http://www.w3.org/TR/css3-mediaqueries/&quot;&gt;http://www.w3.org/TR/css3-mediaqueries/&lt;/a&gt;&lt;br /&gt;
MDC文档：&lt;a target=&quot;_blank&quot;  href=&quot;https://developer.mozilla.org/En/CSS/Media_queries&quot;&gt;https://developer.mozilla.org/En/CSS/Media_queries&lt;/a&gt;&lt;br /&gt;
Opera文档：&lt;a target=&quot;_blank&quot;  href=&quot;http://www.opera.com/docs/specs/css/&quot;&gt;http://www.opera.com/docs/specs/css/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style=&quot;color:#ff6600;&quot;&gt;支持：Firefox 3.5+, Safari 3+, Opera 7+&lt;/strong&gt;&lt;br /&gt;
&lt;br/&gt;&lt;/p&gt;
&lt;h3&gt;CSS3 2D Transforms&lt;/h3&gt;
&lt;p&gt;css变形，有人用这个实现&lt;a target=&quot;_blank&quot;  href=&quot;http://ajaxian.com/archives/fun-with-3d-css-and-video&quot;&gt;伪3d效果&lt;/a&gt;以及&lt;a target=&quot;_blank&quot;  href=&quot;http://www.zachstronaut.com/projects/rotate3di/&quot;&gt;旋转效果的jquery插件&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Gray;&quot;&gt;-moz-transform: &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;rotate&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;(-45&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;deg&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;skew&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;(15&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;deg&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, 15&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;deg&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;);&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Blue;&quot;&gt;sprite&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;-webkit-transform&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;rotate(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; + &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;v&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; + &lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;rad)&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;w3c标准：&lt;a target=&quot;_blank&quot;  href=&quot;http://www.w3.org/TR/css3-2d-transforms/&quot;&gt;http://www.w3.org/TR/css3-2d-transforms/&lt;/a&gt;&lt;br /&gt;
MDC文档：&lt;a target=&quot;_blank&quot;  href=&quot;https://developer.mozilla.org/En/CSS/CSS_transform_functions&quot;&gt;https://developer.mozilla.org/En/CSS/CSS_transform_functions&lt;/a&gt;&lt;br /&gt;
webkit博客的介绍: &lt;a target=&quot;_blank&quot;  href=&quot;http://webkit.org/blog/130/css-transforms/&quot;&gt;http://webkit.org/blog/130/css-transforms/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style=&quot;color:#ff6600;&quot;&gt;支持：Firefox 3.5+, Safari 3.1+&lt;/strong&gt;&lt;br /&gt;
&lt;strong style=&quot;color:#ff6600;&quot;&gt;替代/过渡：IE5.5+ Matrix Filter &lt;a target=&quot;_blank&quot;  href=&quot;http://msdn.microsoft.com/en-us/library/ms533014(VS.85).aspx&quot;&gt;http://msdn.microsoft.com/en-us/library/ms533014(VS.85).aspx&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;br/&gt;&lt;/p&gt;
&lt;h3&gt;CSS3 Transitions and CSS Animations&lt;/h3&gt;
&lt;p&gt;备受期待的css动画，webkit团队提出的草案，transition实现简单的属性渐变，animation定义更复杂的动画效果&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Gray;&quot;&gt;transition-property: &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;transition-duration: 1&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;animation-name: '&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;diagonal-slide&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;';&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;animation-duration: 5&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;animation-iteration-count: 10;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;@keyframes&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; '&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;diagonal-slide&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;' &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{}&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;w3c标准：&lt;a target=&quot;_blank&quot;  href=&quot;http://www.w3.org/TR/css3-transitions/&quot;&gt;http://www.w3.org/TR/css3-transitions/&lt;/a&gt;&lt;br /&gt;
w3c标准：&lt;a target=&quot;_blank&quot;  href=&quot;http://www.w3.org/TR/css3-animations/&quot;&gt;http://www.w3.org/TR/css3-animations/&lt;/a&gt;&lt;br /&gt;
webkit博客的介绍：&lt;a target=&quot;_blank&quot;  href=&quot;http://webkit.org/blog/138/css-animation/&quot;&gt;http://webkit.org/blog/138/css-animation/&lt;/a&gt;&lt;br /&gt;
约翰同学的介绍：&lt;a target=&quot;_blank&quot;  href=&quot;http://ejohn.org/blog/css-animations-and-javascript/&quot;&gt;http://ejohn.org/blog/css-animations-and-javascript/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style=&quot;color:#ff6600;&quot;&gt;支持：Safari 3.1+&lt;/strong&gt;&lt;br /&gt;
&lt;br/&gt;&lt;/p&gt;
&lt;h3&gt;CSS3 Downloadable fonts&lt;/h3&gt;
&lt;p&gt;能在网页里嵌入任意字体是设计师的梦想……不过这里支持的也仅限truetype和opentype&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;@font&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;face&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{}&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;w3c标准：&lt;a target=&quot;_blank&quot;  href=&quot;http://www.w3.org/TR/css3-fonts/#font-resources&quot;&gt;http://www.w3.org/TR/css3-fonts/#font-resources&lt;/a&gt;&lt;br /&gt;
MSDN文档：&lt;a target=&quot;_blank&quot;  href=&quot;http://msdn.microsoft.com/en-us/library/ms530303(VS.85).aspx&quot;&gt;http://msdn.microsoft.com/en-us/library/ms530303(VS.85).aspx&lt;/a&gt;&lt;br /&gt;
MDC文档：&lt;a target=&quot;_blank&quot;  href=&quot;https://developer.mozilla.org/en/CSS/@font-face&quot;&gt;https://developer.mozilla.org/en/CSS/@font-face&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style=&quot;color:#ff6600;&quot;&gt;支持：Firefox 3.5+, Safari 3.1+, Opera 10.0+, IE4.0+&lt;/strong&gt;&lt;br /&gt;
&lt;br/&gt;&lt;/p&gt;
&lt;h3&gt;附赠：其他CSS3 property的兼容性&lt;/h3&gt;
&lt;p&gt;ppk同学维护的文档: &lt;a target=&quot;_blank&quot;  href=&quot;http://www.quirksmode.org/css/contents.html&quot;&gt;http://www.quirksmode.org/css/contents.html&lt;/a&gt;&lt;br /&gt;
css3.info维护的文档：&lt;a target=&quot;_blank&quot;  href=&quot;http://www.css3.info/modules/selector-compat/&quot;&gt;http://www.css3.info/modules/selector-compat/&lt;/a&gt;&lt;br /&gt;
一个测试页面：&lt;a target=&quot;_blank&quot;  href=&quot;http://westciv.com/iphonetests/&quot;&gt;http://westciv.com/iphonetests/&lt;/a&gt;&lt;br /&gt;
&lt;br/&gt;&lt;/p&gt;
&lt;h3&gt;HTML5 DOM Storage&lt;/h3&gt;
&lt;p&gt;简洁的持久存储，键值对的形式&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Blue;&quot;&gt;window.localStorage&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;window.sessionStorage&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; //可跨域，标签页关掉就清空&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;w3c标准：&lt;a target=&quot;_blank&quot;  href=&quot;http://www.w3.org/TR/webstorage/&quot;&gt;http://www.w3.org/TR/webstorage/&lt;/a&gt;&lt;br /&gt;
ppk同学维护的兼容性列表：&lt;a target=&quot;_blank&quot;  href=&quot;http://www.quirksmode.org/dom/html5.html#localstorage&quot;&gt;http://www.quirksmode.org/dom/html5.html#localstorage&lt;/a&gt;&lt;br /&gt;
MDC文档：&lt;a target=&quot;_blank&quot;  href=&quot;https://developer.mozilla.org/en/DOM/Storage&quot;&gt;https://developer.mozilla.org/en/DOM/Storage&lt;/a&gt;&lt;br /&gt;
MSDN文档：&lt;a target=&quot;_blank&quot;  href=&quot;http://msdn.microsoft.com/en-us/library/cc197062(VS.85).aspx&quot;&gt;http://msdn.microsoft.com/en-us/library/cc197062(VS.85).aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style=&quot;color:#ff6600;&quot;&gt;支持：Firefox 3.5+, Safari 4.0+, IE 8.0+&lt;/strong&gt;&lt;br /&gt;
&lt;br/&gt;&lt;/p&gt;
&lt;h3&gt;HTML5 Offline Application Cache&lt;/h3&gt;
&lt;p&gt;用一个manifest文件缓存静态资源（图片,css, js之类）在离线状态下使用，不是结构化数据&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;manifest&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;foo.manifest&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;CACHE MANIFEST&lt;/li&gt;
&lt;li&gt;index.html&lt;/li&gt;
&lt;li&gt;style/default.css&lt;/li&gt;
&lt;li&gt;images/logo.png&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;w3c标准：&lt;a target=&quot;_blank&quot;  href=&quot;http://www.w3.org/TR/offline-webapps/#offline&quot;&gt;http://www.w3.org/TR/offline-webapps/#offline&lt;/a&gt;&lt;br /&gt;
MDC文档：&lt;a target=&quot;_blank&quot;  href=&quot;https://developer.mozilla.org/en/Offline_resources_in_Firefox&quot;&gt;https://developer.mozilla.org/en/Offline_resources_in_Firefox&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style=&quot;color:#ff6600;&quot;&gt;支持：Firefox 3.5+&lt;/strong&gt;&lt;br /&gt;
&lt;br/&gt;&lt;/p&gt;
&lt;h3&gt;HTML5 Database Storage&lt;/h3&gt;
&lt;p&gt;本地数据库，支持sql，最早是google gears实现，现在的w3c草案的编辑也是google的工程师……但奇怪的是，gears的api跟现在的草案不兼容，chrome甚至为了保留捆绑的gears的数据库api而删除了webkit实现的html5 api……而google在iphone上实现gmail离线功能的时候又采用webkit的api……真纠结……&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;db&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;window&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;openDatabase&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;notes&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;The Example Notes App!&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;1048576&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;db&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;transaction&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;tx&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;tx&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;executeSql&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;‘&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;SELECT&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; * &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Notes&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;’, &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;[]&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;tx&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;rs&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{})&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Olive;&quot;&gt;})&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;w3c标准：&lt;a target=&quot;_blank&quot;  href=&quot;http://www.w3.org/TR/offline-webapps/#sql&quot;&gt;http://www.w3.org/TR/offline-webapps/#sql&lt;/a&gt;&lt;br /&gt;
webkit博客的介绍：&lt;a target=&quot;_blank&quot;  href=&quot;http://webkit.org/blog/126/webkit-does-html5-client-side-database-storage/&quot;&gt;http://webkit.org/blog/126/webkit-does-html5-client-side-database-storage/&lt;/a&gt;&lt;br /&gt;
iphone的文档：&lt;a target=&quot;_blank&quot;  href=&quot;http://developer.apple.com/documentation/iPhone/Conceptual/SafariJSDatabaseGuide/UsingtheJavascriptDatabase/UsingtheJavascriptDatabase.html#//apple_ref/doc/uid/TP40007256-CH3-SW1&quot;&gt;http://developer.apple.com/documentation/iPhone/Conceptual/SafariJSDatabaseGuide/UsingtheJavascriptDatabase/UsingtheJavascriptDatabase.html#//apple_ref/doc/uid/TP40007256-CH3-SW1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style=&quot;color:#ff6600;&quot;&gt;支持：Safari 3.1+&lt;/strong&gt;&lt;br /&gt;
&lt;strong style=&quot;color:#ff6600;&quot;&gt;替代/过渡：Gears &lt;a target=&quot;_blank&quot;  href=&quot;http://code.google.com/p/gears/wiki/Database2API&quot;&gt;http://code.google.com/p/gears/wiki/Database2API&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;br/&gt;&lt;/p&gt;
&lt;h3&gt;HTML5 Web Workers&lt;/h3&gt;
&lt;p&gt;多线程，在后台执行复杂运算，不能操作dom，线程之间通过消息事件通信&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;myWorker&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Worker&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;my_worker.js&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;myWorker&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;onmessage&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;myWorker&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;postMessage&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;w3c标准：&lt;a target=&quot;_blank&quot;  href=&quot;http://www.w3.org/TR/workers/&quot;&gt;http://www.w3.org/TR/workers/&lt;/a&gt;&lt;br /&gt;
MDC文档：&lt;a target=&quot;_blank&quot;  href=&quot;https://developer.mozilla.org/En/Using_web_workers&quot;&gt;https://developer.mozilla.org/En/Using_web_workers&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style=&quot;color:#ff6600;&quot;&gt;支持：Firefox 3.5+&lt;/strong&gt;&lt;br /&gt;
&lt;strong style=&quot;color:#ff6600;&quot;&gt;替代/过渡：Gears &lt;a target=&quot;_blank&quot;  href=&quot;http://code.google.com/p/gears/wiki/HTML5WorkerProposal&quot;&gt;http://code.google.com/p/gears/wiki/HTML5WorkerProposal&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;br/&gt;&lt;/p&gt;
&lt;h3&gt;HTML5 Geolocation&lt;/h3&gt;
&lt;p&gt;地理api&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Teal;&quot;&gt;window&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;navigator&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;geolocation&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;w3c标准：&lt;a target=&quot;_blank&quot;  href=&quot;http://www.w3.org/TR/geolocation-API/&quot;&gt;http://www.w3.org/TR/geolocation-API/&lt;/a&gt;&lt;br /&gt;
MDC文档：&lt;a target=&quot;_blank&quot;  href=&quot;https://developer.mozilla.org/En/Using_geolocation&quot;&gt;https://developer.mozilla.org/En/Using_geolocation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style=&quot;color:#ff6600;&quot;&gt;支持：Firefox 3.5+&lt;/strong&gt;&lt;br /&gt;
&lt;strong style=&quot;color:#ff6600;&quot;&gt;替代/过渡：Gears &lt;a target=&quot;_blank&quot;  href=&quot;http://code.google.com/p/gears/wiki/GeolocationAPI&quot;&gt;http://code.google.com/p/gears/wiki/GeolocationAPI&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;br/&gt;&lt;/p&gt;
&lt;h3&gt;HTML5 Drag and Drop&lt;/h3&gt;
&lt;p&gt;原生拖拽事件&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Blue;&quot;&gt;ondragstart&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;ondrag&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;ondragend&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//拖拽过程中&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;ondragenter&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;ondragover&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;ondragleave&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;ondrop&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;w3c标准：&lt;a target=&quot;_blank&quot;  href=&quot;http://www.w3.org/TR/html5/editing.html#dnd&quot;&gt;http://www.w3.org/TR/html5/editing.html#dnd&lt;/a&gt;&lt;br /&gt;
MDC文档：&lt;a target=&quot;_blank&quot;  href=&quot;https://developer.mozilla.org/En/DragDrop/Drag_and_Drop&quot;&gt;https://developer.mozilla.org/En/DragDrop/Drag_and_Drop&lt;/a&gt;&lt;br /&gt;
apple文档：&lt;a target=&quot;_blank&quot;  href=&quot;http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSProgTopics/Tasks/DragAndDrop.html#//apple_ref/doc/uid/30001233&quot;&gt;http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSProgTopics/Tasks/DragAndDrop.html#//apple_ref/doc/uid/30001233&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style=&quot;color:#ff6600;&quot;&gt;支持：Firefox 3.5+, Safari 2.0+, Chrome 1.0+, IE 5.0+&lt;/strong&gt;&lt;br /&gt;
&lt;br/&gt;&lt;/p&gt;
&lt;h3&gt;HTML5 Audio and Video&lt;/h3&gt;
&lt;p&gt;用html标签来嵌入视频音频的好处并非是“开源格式”，而是“开放性”，让多媒体可以与其他页面元素交互，或者&lt;a target=&quot;_blank&quot;  href=&quot;http://blog.mozbox.org/post/2009/04/12/Firefox-35:-a-new-experiment-with-Canvas-Video&quot;&gt;用页面技术去跟视频“mashup”&lt;/a&gt;，这种随意组合和交互的能力是web技术兴盛的基石，也是像flash这类封闭RIA容器最大的缺点。&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;video&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;controls&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;source&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=“&lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;zombie&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;ogg&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;” &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=“&lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;video&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;ogg&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;”&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;source&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=“&lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;zombie&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;mp4&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;″ &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=“&lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;video&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;mp4&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;″&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;video&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;MDC文档：&lt;a target=&quot;_blank&quot;  href=&quot;https://developer.mozilla.org/En/Using_audio_and_video_in_Firefox&quot;&gt;https://developer.mozilla.org/En/Using_audio_and_video_in_Firefox&lt;/a&gt;&lt;br /&gt;
webkit博客的介绍：&lt;a target=&quot;_blank&quot;  href=&quot;http://webkit.org/blog/140/html5-media-support/&quot;&gt;http://webkit.org/blog/140/html5-media-support/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style=&quot;color:#ff6600;&quot;&gt;支持：Firefox 3.5+, Safari 3.0+, Chrome 3.0+&lt;/strong&gt;&lt;br /&gt;
&lt;strong style=&quot;color:#ff6600;&quot;&gt;替代/过渡：用video标签嵌套embed &lt;a target=&quot;_blank&quot;  href=&quot;http://hacks.mozilla.org/2009/06/html5-video-fallbacks-markup/&quot;&gt;http://hacks.mozilla.org/2009/06/html5-video-fallbacks-markup/&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;br/&gt;&lt;/p&gt;
&lt;h3&gt;HTML5 Canvas&lt;/h3&gt;
&lt;p&gt;apple发明，最早应用于dashboard，目前主流的js图像技术，mozilla已经在实现OpenGL ES标准的&lt;a target=&quot;_blank&quot;  href=&quot;http://blog.vlad1.com/2007/11/26/canvas-3d-gl-power-web-style/&quot;&gt;Canvas 3D&lt;/a&gt;了，另外据说ie team为支持canvas&lt;a target=&quot;_blank&quot;  href=&quot;http://processingjs.org/blog/?p=77&quot;&gt;做了大量工作&lt;/a&gt;……实际上canvas api相当底层，特别是交互方面，不如svg直观，所以出现了很多封装它的库&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;ctx&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = $&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;#canvas&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)[&lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;getContext&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;2d&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;ctx&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;fillStyle&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;#00A308&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;ctx&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;beginPath&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;ctx&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;arc&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;220&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;220&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;50&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;Math&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;PI&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;ctx&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;closePath&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;ctx&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;fill&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;MDC文档：&lt;a target=&quot;_blank&quot;  href=&quot;https://developer.mozilla.org/en/Canvas_tutorial&quot;&gt;https://developer.mozilla.org/en/Canvas_tutorial&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style=&quot;color:#ff6600;&quot;&gt;支持：Firefox 1.5+, Safari 2.0+, Chrome 1.0+, Opera 9.0+&lt;/strong&gt;&lt;br /&gt;
&lt;strong style=&quot;color:#ff6600;&quot;&gt;替代/过渡：excanvas.js &lt;a target=&quot;_blank&quot;  href=&quot;http://code.google.com/p/explorercanvas/&quot;&gt;http://code.google.com/p/explorercanvas/&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;br/&gt;&lt;/p&gt;
&lt;h3&gt;SVG&lt;/h3&gt;
&lt;p&gt;w3c标准：&lt;a target=&quot;_blank&quot;  href=&quot;http://www.w3.org/TR/SVG12/&quot;&gt;http://www.w3.org/TR/SVG12/&lt;/a&gt;&lt;br /&gt;
IBM DW教程：&lt;a target=&quot;_blank&quot;  href=&quot;http://www.ibm.com/developerworks/cn/views/xml/tutorials.jsp?cv_doc_id=84896&quot;&gt;http://www.ibm.com/developerworks/cn/views/xml/tutorials.jsp?cv_doc_id=84896&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style=&quot;color:#ff6600;&quot;&gt;支持：Firefox 1.5+, Safari 3.0+, Chrome 1.0+, Opera 9.0+&lt;/strong&gt;&lt;br /&gt;
&lt;strong style=&quot;color:#ff6600;&quot;&gt;替代/过渡：raphael.js &lt;a target=&quot;_blank&quot;  href=&quot;http://raphaeljs.com/&quot;&gt;http://raphaeljs.com/&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;br/&gt;&lt;/p&gt;
&lt;h3&gt;XMLHttpRequest 2&lt;/h3&gt;
&lt;p&gt;主要是增加跨域能力以及请求过程中的事件&lt;/p&gt;
&lt;p&gt;w3c标准：&lt;a target=&quot;_blank&quot;  href=&quot;http://www.w3.org/TR/XMLHttpRequest2/&quot;&gt;http://www.w3.org/TR/XMLHttpRequest2/&lt;/a&gt;&lt;br /&gt;
MDC文档：&lt;a target=&quot;_blank&quot;  href=&quot;https://developer.mozilla.org/En/Using_XMLHttpRequest#Monitoring_progress&quot;&gt;https://developer.mozilla.org/En/Using_XMLHttpRequest#Monitoring_progress&lt;/a&gt;&lt;br /&gt;
XDomainRequest (XDR)&lt;br /&gt;
MSDN文档：&lt;a target=&quot;_blank&quot;  href=&quot;http://msdn.microsoft.com/en-us/library/cc288060(VS.85).aspx&quot;&gt;http://msdn.microsoft.com/en-us/library/cc288060(VS.85).aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style=&quot;color:#ff6600;&quot;&gt;支持：Firefox 3.5+（实现了部分）, IE 8.0+（实现了部分）&lt;/strong&gt;&lt;br /&gt;
&lt;br/&gt;&lt;/p&gt;
&lt;h3&gt;Access Control&lt;/h3&gt;
&lt;p&gt;千呼万唤的跨域访问控制，目前firefox3.5和ie8有一些不同，ie8搞的XDR和XDM我也不知道是不是准备提交给w3c标准化的东西……&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;Access-Control-Allow-Origin: http://foo.example&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;w3c标准：&lt;a target=&quot;_blank&quot;  href=&quot;http://www.w3.org/TR/cors/&quot;&gt;http://www.w3.org/TR/cors/&lt;/a&gt;&lt;br /&gt;
MDC文档：&lt;a target=&quot;_blank&quot;  href=&quot;https://developer.mozilla.org/En/HTTP_Access_Control&quot;&gt;https://developer.mozilla.org/En/HTTP_Access_Control&lt;/a&gt;&lt;br /&gt;
Cross-document Messaging (XDM)&lt;br /&gt;
MSDN文档：&lt;a target=&quot;_blank&quot;  href=&quot;http://msdn.microsoft.com/en-us/library/cc197057(VS.85).aspx&quot;&gt;http://msdn.microsoft.com/en-us/library/cc197057(VS.85).aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style=&quot;color:#ff6600;&quot;&gt;支持：Firefox 3.5+, IE8.0+&lt;/strong&gt;&lt;br /&gt;
&lt;br/&gt;&lt;/p&gt;
&lt;h3&gt;E4X (ECMA-357)&lt;/h3&gt;
&lt;p&gt;Firefox和ActionScript3早就实现了的东西……不过其实现在json这么流行，有没有E4X好像都无所谓了～（瞎说的，其实在js代码里直接写dom对象而不是html字符串，会方便很多）&lt;/p&gt;
&lt;p&gt;MDC文档：&lt;a target=&quot;_blank&quot;  href=&quot;https://developer.mozilla.org/en/E4X&quot;&gt;https://developer.mozilla.org/en/E4X&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style=&quot;color:#ff6600;&quot;&gt;支持：Firefox 1.5+&lt;/strong&gt;&lt;br /&gt;
&lt;br/&gt;&lt;/p&gt;
&lt;h3&gt;ECMAScript 5  Native JSON&lt;/h3&gt;
&lt;p&gt;原生的JSON支持，速度和安全性都比eval强一百倍亚一百倍，另外要注意Douglas Crockford的json2.js是一个用js实现的js解释器，所以安全性更好&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Blue;&quot;&gt;JSON&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;parse&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;translate&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;JSON&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;stringify&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;obj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;translate&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Teal;&quot;&gt;String&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;prototype&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;toJSON&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Boolean&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;prototype&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;toJSON&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Teal;&quot;&gt;Number&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;prototype&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;toJSON&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Teal;&quot;&gt;Date&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;prototype&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;toJSON&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;MDC文档：&lt;a target=&quot;_blank&quot;  href=&quot;http://blog.mozilla.com/webdev/2009/02/12/native-json-in-firefox-31/&quot;&gt;http://blog.mozilla.com/webdev/2009/02/12/native-json-in-firefox-31/&lt;/a&gt;&lt;br /&gt;
MSDN文档：&lt;a target=&quot;_blank&quot;  href=&quot;http://blogs.msdn.com/ie/archive/2008/09/10/native-json-in-ie8.aspx&quot;&gt;http://blogs.msdn.com/ie/archive/2008/09/10/native-json-in-ie8.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style=&quot;color:#ff6600;&quot;&gt;支持：Firefox 3.5+, IE8+&lt;/strong&gt;&lt;br /&gt;
&lt;strong style=&quot;color:#ff6600;&quot;&gt;替代/过渡：json2.js &lt;a target=&quot;_blank&quot;  href=&quot;http://www.json.org/json2.js&quot;&gt;http://www.json.org/json2.js&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;br/&gt;&lt;/p&gt;
&lt;h3&gt;ECMAScript 5  Array Extras&lt;/h3&gt;
&lt;p&gt;js1.6里实现的数组方法，主要是forEach, map, fliter这几个函数式编程里非常重要的方法，还有反向查询&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Teal;&quot;&gt;Array&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;prototype&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;indexOf&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Teal;&quot;&gt;Array&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;prototype&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;lastIndexOf&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Teal;&quot;&gt;Array&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;prototype&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;every&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;fn&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Teal;&quot;&gt;Array&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;prototype&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;some&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;fn&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Teal;&quot;&gt;Array&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;prototype&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;filter&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;fn&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Teal;&quot;&gt;Array&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;prototype&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;forEach&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;fn&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Teal;&quot;&gt;Array&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;prototype&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;fn&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;MDC文档：&lt;a target=&quot;_blank&quot;  href=&quot;https://developer.mozilla.org/en/New_in_JavaScript_1.6#Array_extras&quot;&gt;https://developer.mozilla.org/en/New_in_JavaScript_1.6#Array_extras&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style=&quot;color:#ff6600;&quot;&gt;支持：Firefox2.0+, Safari 3.0+, Google Chrome 1.0+, Opera 9.5+&lt;/strong&gt;&lt;br /&gt;
&lt;strong style=&quot;color:#ff6600;&quot;&gt;替代/过渡：都可以通过扩展Array.prototype来模拟&lt;/strong&gt;&lt;br /&gt;
&lt;br/&gt;&lt;/p&gt;
&lt;h3&gt;ECMAScript 5  isArray()&lt;/h3&gt;
&lt;p&gt;区分数组和对象&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Teal;&quot;&gt;Array&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;isArray&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;([])&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;// true&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong style=&quot;color:#ff6600;&quot;&gt;支持：无&lt;/strong&gt;&lt;br /&gt;
&lt;strong style=&quot;color:#ff6600;&quot;&gt;替代/过渡：Array.isArray = function(a){ return Object.prototype.toString.call(a) === &amp;#8220;[object Array]&amp;#8221;;};&lt;/strong&gt;&lt;br /&gt;
&lt;br/&gt;&lt;/p&gt;
&lt;h3&gt;ECMAScript 5  Object&lt;/h3&gt;
&lt;p&gt;用GOOGLE I/O演讲里的话来说：更鲁棒(robust)的对象系统&lt;br /&gt;
&lt;br/&gt;&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;getPrototypeOf&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;obj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;约翰同学的讲解：&lt;a target=&quot;_blank&quot;  href=&quot;http://ejohn.org/blog/objectgetprototypeof/&quot;&gt;http://ejohn.org/blog/objectgetprototypeof/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style=&quot;color:#ff6600;&quot;&gt;支持：Firefox3.5&lt;/strong&gt;&lt;br /&gt;
&lt;strong style=&quot;color:#ff6600;&quot;&gt;替代/过渡：object.__proto__ 或 object.constructor.prototype&lt;/strong&gt;&lt;br /&gt;
&lt;br/&gt;&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;create&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;proto&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;props&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//克隆或继承对象&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;keys&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;obj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//数据结构的映射&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;getOwnPropertyNames&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;obj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;preventExtensions&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;obj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//不能添加新属性&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;isExtensible&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;obj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;seal&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;obj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//不能删除和修改属性的配置，不能添加新属性&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;isSealed&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;obj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;freeze&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;obj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//不能删除和修改属性的配置，不能添加新属性，不能写属性&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;isFrozen&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;obj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;约翰同学的讲解：&lt;a target=&quot;_blank&quot;  href=&quot;http://ejohn.org/blog/ecmascript-5-objects-and-properties/&quot;&gt;http://ejohn.org/blog/ecmascript-5-objects-and-properties/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style=&quot;color:#ff6600;&quot;&gt;支持：无&lt;/strong&gt;&lt;br /&gt;
&lt;strong style=&quot;color:#ff6600;&quot;&gt;替代/过渡：Object.create和Object.keys可以自己实现&lt;/strong&gt;&lt;br /&gt;
&lt;br/&gt;&lt;/p&gt;
&lt;h3&gt;ECMAScript 5 Property Descriptor&lt;/h3&gt;
&lt;p&gt;对象属性的访问控制&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;getOwnPropertyDescriptor&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;obj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;prop&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;defineProperty&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;obj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;prop&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;desc&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;defineProperties&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;obj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;props&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;desc&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;,&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;writable&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//修改&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;enumerable&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//for in&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;configurable&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//删除和修改属性&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(){&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;,&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;约翰同学的讲解：&lt;a target=&quot;_blank&quot;  href=&quot;http://ejohn.org/blog/ecmascript-5-objects-and-properties/&quot;&gt;http://ejohn.org/blog/ecmascript-5-objects-and-properties/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style=&quot;color:#ff6600;&quot;&gt;支持：无&lt;/strong&gt;&lt;br /&gt;
&lt;strong style=&quot;color:#ff6600;&quot;&gt;替代/过渡：Object.defineProperties其实相当于jQuery.extend，用来实现Mixin&lt;/strong&gt;&lt;br /&gt;
&lt;br/&gt;&lt;/p&gt;
&lt;h3&gt;ECMAScript 5 Getters and Setters&lt;/h3&gt;
&lt;p&gt;python和ruby里都有的属性访问方法&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Blue;&quot;&gt;obj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;innerHTML&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; …; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;innerHTML&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;newHTML&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; … &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;MDC文档：&lt;a target=&quot;_blank&quot;  href=&quot;https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Creating_New_Objects/Defining_Getters_and_Setters&quot;&gt;https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Creating_New_Objects/Defining_Getters_and_Setters&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style=&quot;color:#ff6600;&quot;&gt;支持：Firefox 2.0+, Safari 3.0+, Google Chrome 1.0+, Opera 9.5+&lt;/strong&gt;&lt;br /&gt;
&lt;strong style=&quot;color:#ff6600;&quot;&gt;替代/过渡：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;非标准，Firefox1.5里的旧方法&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Blue;&quot;&gt;HTMLElement&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;prototype&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;__defineGetter__&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;innerHTML&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{})&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Blue;&quot;&gt;HTMLElement&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;prototype&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;__defineSetter__&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;innerHTML&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;val&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{})&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong style=&quot;color:#ff6600;&quot;&gt;支持：Firefox 2.0+, Safari 3.0+, Google Chrome 1.0+, Opera 9.5+&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;标准&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;defineProperty&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;innerHTML&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; : &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;})&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;MSDN文档：&lt;a target=&quot;_blank&quot;  href=&quot;http://msdn.microsoft.com/en-us/library/dd229916(VS.85).aspx&quot;&gt;http://msdn.microsoft.com/en-us/library/dd229916(VS.85).aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style=&quot;color:#ff6600;&quot;&gt;支持：IE8+ (只能对DOM使用)&lt;/strong&gt;&lt;br /&gt;
&lt;br/&gt;&lt;/p&gt;
&lt;h3&gt;ECMAScript 5 Strict Mode&lt;/h3&gt;
&lt;p&gt;ES5的严格模式，删除了旧版本中容易引起问题的元素，并且会显式的报错，方便调试&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;use strict&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//以下情况下抛出异常&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//对未定义的变量赋值&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//操作被设置为不可写，不可配置或不可扩充的属性&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//删除变量，函数，参数&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//在对象直接量里重复定义属性&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//eval做关键字，在eval的字符串里定义变量&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//覆写arguments&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//使用arguments.caller和arguments.callee（匿名函数必须具名才能引用自己）&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//(function(){ ... }).call( null ); // Exception &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//使用with&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;约翰同学的讲解：&lt;a target=&quot;_blank&quot;  href=&quot;http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/&quot;&gt;http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style=&quot;color:#ff6600;&quot;&gt;支持：无&lt;/strong&gt;&lt;br /&gt;
&lt;strong style=&quot;color:#ff6600;&quot;&gt;替代/过渡：……从现在开始养成严谨的编程习惯&lt;/strong&gt;&lt;br /&gt;
&lt;br/&gt;&lt;/p&gt;
&lt;h3&gt;ECMAScript 5 其他新特性&lt;/h3&gt;
&lt;p&gt;传递函数的引用时，绑定this&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Teal;&quot;&gt;Function&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;prototype&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;bind&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;thisArg&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;arg1&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;arg2&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;....&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;/&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong style=&quot;color:#ff6600;&quot;&gt;支持：无&lt;/strong&gt;&lt;br /&gt;
&lt;strong style=&quot;color:#ff6600;&quot;&gt;替代/过渡：prototype &lt;a target=&quot;_blank&quot;  href=&quot;http://www.prototypejs.org/api/function/bind&quot;&gt;http://www.prototypejs.org/api/function/bind&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;ISO-formatted dates&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Teal;&quot;&gt;Date&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;prototype&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;toISOString&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;// Prints 2009-05-21T16:06:05.000TZ&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong style=&quot;color:#ff6600;&quot;&gt;支持：无&lt;/strong&gt;&lt;br /&gt;
&lt;strong style=&quot;color:#ff6600;&quot;&gt;替代/过渡：datejs &lt;a target=&quot;_blank&quot;  href=&quot;http://code.google.com/p/datejs/&quot;&gt;http://code.google.com/p/datejs/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Teal;&quot;&gt;String&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;prototype&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;trim&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;()&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong style=&quot;color:#ff6600;&quot;&gt;支持：Firefox3.5&lt;/strong&gt;&lt;br /&gt;
&lt;strong style=&quot;color:#ff6600;&quot;&gt;替代/过渡：各种正则实现 &lt;a target=&quot;_blank&quot;  href=&quot;http://blog.stevenlevithan.com/archives/faster-trim-javascript&quot;&gt;http://blog.stevenlevithan.com/archives/faster-trim-javascript&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;br/&gt;&lt;br /&gt;
===================废话又开始的分割线=======================&lt;/p&gt;
&lt;p&gt;其实我把这个东西发出来是希望能促进创新的氛围，让更多人认识到很多新技术已经进入到“实用”阶段。&lt;/p&gt;
&lt;p&gt;如果只是想做个实验性的webgame，或是只能用于特定平台的应用（比如iphone，greasemonkey），firefox3.5+webkit的支持就已经足够罢。&lt;/p&gt;
&lt;p&gt;如果不能无视主流平台，有很多技术能让你gracefully degrade（优雅的退化）或者选取不同的方法实现兼容的接口。&lt;/p&gt;
&lt;p&gt;如果你等不及IE x在若干年后实现xx，希望提前享受福利，有些技术的设计原则就是让你能在没有native支持的情况下可以自己实现一模一样的功能或语法糖（syntactic sugar），比如ES5对象的继承和访问控制，从ES4/ActionScript3时期那些老土的关键词（class extands private static）改成了Object.create(p, attrs).defineProperty(o, n, attrs).defineProperties(o, attrs).freeze().getOwnPropertyNames().map(fn)，不会只是为了酷炫罢……&lt;/p&gt;
&lt;p&gt;很多人都喜欢抱怨“我这辈子都没机会用HTML5”，但是只要把视线从自己脚下那巴掌大块地移开看看别处，会发现世界其实一直都在改变喔XD&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/333038669/dexteryy/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dexteryy/~6072067/333038669/4180063/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/dexteryy/333038669/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/dexteryy/333038669/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;fsflare&quot;&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=2fcdce620e56a53c5a0d73529c9d6f30&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=2fcdce620e56a53c5a0d73529c9d6f30&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=733940927d765b8a1a1807b4294594ed&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=733940927d765b8a1a1807b4294594ed&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=72d63654973525dc96068fcde9870a09&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=72d63654973525dc96068fcde9870a09&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.limboy.com/2009/06/29/html5-css3-es5-support/feed/</wfw:commentRss><description>好罢这篇本来是我私下做的笔记，我特别喜欢在Evernote上做备忘的笔记，虽然上次看到漏屋老师的文章里说我现在的年龄才刚刚进入记忆力的巅峰期……但是我的自信心仍然屡受打击！比如跟别人讨论The Dark Knight里小丑在医院对检察官说了什么让他变成双面人，我一句对白都想不起来，还有big bang theory s2里penny玩age of conan时的人物名字是&amp;#8221;Queen Penelope&amp;#8221;，我看的时候印象很深，一个月后就连奥德赛都想不起来了。留份笔记总觉得心里踏实些……啊又跑题了
本文整理了一些最重要（或者说人气比较高罢）的新标准，虽然它们多数还只是w3c的草案，离Recommendation级别还早，却已经成为新一轮浏览器大战中备受追捧的明星，开发者社区里也涌现出大量相关的demo和API封装，有些已经进入生产环境（比如google在iphone上实现的gmail离线应用），其实我觉得如今的web领域里，从厂商私有技术转换成委员会标准再转换成通用技术产生杀手级应用的周期已经显著的加速了，是因为现在web application的需求太高了么…… UPDATE：刚才在solidot发软文的时候我突然想明白怎么表述这个问题：其实现在很多浏览器厂商同时也是基于浏览器的应用开发者和web标准的制定者，就好像修筑舞台的工程师同时也是舞台上的演员和舞蹈动作的导演一样，所以google, mozilla, apple们都在不遗余力的实现那些有利于开发web应用的技术标准，即时它们还是W3C Working Draft，相比之下IE team就比较缺乏动力，果然计划经济缺乏活力亚XD……
&lt;span class=&quot;readmore&quot;&gt;&lt;a href=&quot;http://www.limboy.com/2009/06/29/html5-css3-es5-support/&quot; title=&quot;HTML5, CSS3, ES5...新的web标准和浏览器支持一览&quot; target=&quot;_blank&quot;&gt;阅读全文——共10591字&lt;/a&gt;&lt;/span&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/333038669/dexteryy/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dexteryy/~6072067/333038669/4180063/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/dexteryy/333038669/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/dexteryy/333038669/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;fsflare&quot;&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=2fcdce620e56a53c5a0d73529c9d6f30&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=2fcdce620e56a53c5a0d73529c9d6f30&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=733940927d765b8a1a1807b4294594ed&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=733940927d765b8a1a1807b4294594ed&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=72d63654973525dc96068fcde9870a09&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=72d63654973525dc96068fcde9870a09&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/p&gt;</description><category>web服务/应用</category><category>Ajax</category><category>CSS</category><category>XML</category><category>代码</category><category>JavaScript</category><category>Firefox</category><pubDate>Mon, 29 Jun 2009 08:40:26 +0800</pubDate><author>dexter_yy</author><comments>http://www.limboy.com/2009/06/29/html5-css3-es5-support/#comments</comments><guid isPermaLink="false">http://www.limboy.com/2009/06/29/html5-css3-es5-support/</guid><dc:creator>dexter_yy</dc:creator><fs:srclink>http://www.limboy.com/2009/06/29/html5-css3-es5-support/</fs:srclink><fs:srcfeed>http://www.limboy.com/feed/rss2/</fs:srcfeed><fs:itemid>feedsky/dexteryy/~6072067/333038669/4180063</fs:itemid></item><item><title>继续补充vim配置技巧——上次的vimrc还不够强力</title><link>http://item.feedsky.com/~feedsky/dexteryy/~6072067/333038670/4180063/1/item.html</link><content:encoded>&lt;p&gt;&lt;a href='http://www.limboy.com/wp-content/uploads/2009/06/picture-4.png' title='picture-4.png' target=&quot;_blank&quot;&gt;&lt;img src='http://www.limboy.com/wp-content/uploads/2009/06/picture-4.png' alt='picture-4.png' style=&quot;width:200px;margin:0 10px 10px 0;float:left;&quot; /&gt;&lt;/a&gt;首先要补充一些&lt;a href=&quot;http://code.google.com/p/macvim/&quot; target=&quot;_blank&quot;&gt;MacVim&lt;/a&gt;的配置，其实写上篇文章的时候我还在用已经过时的&lt;a href=&quot;http://macvim.org/OSX/index.php&quot; target=&quot;_blank&quot;&gt;基于Carbon界面的vim for osx&lt;/a&gt;，更接近传统的unix版本，但是好久没更新，只支持vim6.0，soureforge上有一个&lt;a href=&quot;http://sourceforge.net/project/showfiles.php?group_id=213254&quot; target=&quot;_blank&quot;&gt;7.2的版本&lt;/a&gt;，bug诸多，其中的乱码和字体抗锯齿的问题让我完全无法忍。而MacVim是基于Cocoa开发，支持到7.2，还含有很多讨好mac用户的设计，比如对标签的良好支持，华丽的界面（背景颜色支持透明度，字体抗锯齿更漂亮，几乎跟TextMate的效果没区别）……非常后悔以前没仔细试用这个版本！目前为止只发现行高linespace的设置会无法生效，不过这个bug在&lt;a href=&quot;http://code.google.com/p/macvim/wiki/Snapshot&quot; target=&quot;_blank&quot;&gt;最新的快照版&lt;/a&gt;里已经修正了。&lt;/p&gt;
&lt;p&gt;插播一个道歉：由于spam太多，我前段时间在wordpress黑名单里加了一个很苛刻的条件，把所有评论都挡到待审核列表里去了，好像还直接删了一部分……咳……&lt;/p&gt;
&lt;p&gt;我在.vimrc里增加了一些专门针对MacVim的设置：&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;if has(&amp;quot;gui_macvim&amp;quot;)&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;quot;取消默认的快捷键&lt;/li&gt;
&lt;li&gt;&amp;nbsp; let macvim_skip_cmd_opt_movement = 1 &lt;/li&gt;
&lt;li&gt;&amp;nbsp; let macvim_hig_shift_movement = 1&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;quot;设置背景透明度&lt;/li&gt;
&lt;li&gt;&amp;nbsp; set transparency=2&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;quot;隐藏工具条&lt;/li&gt;
&lt;li&gt;&amp;nbsp; set guioptions-=T &amp;quot;egmrt&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;quot;绑定自己需要的cmd快捷键&lt;/li&gt;
&lt;li&gt;&amp;nbsp; macm File.Save&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; key=&amp;lt;D-s&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; macm File.Save\ As\.\.\.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; key=&amp;lt;D-S&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; macm Edit.Undo&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; key=&amp;lt;D-z&amp;gt; action=undo:&lt;/li&gt;
&lt;li&gt;&amp;nbsp; macm Edit.Redo&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; key=&amp;lt;D-Z&amp;gt; action=redo:&lt;/li&gt;
&lt;li&gt;&amp;nbsp; macm Edit.Cut&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;key=&amp;lt;D-x&amp;gt; action=cut:&lt;/li&gt;
&lt;li&gt;&amp;nbsp; macm Edit.Copy&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; key=&amp;lt;D-c&amp;gt; action=copy:&lt;/li&gt;
&lt;li&gt;&amp;nbsp; macm Edit.Paste&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;key=&amp;lt;D-v&amp;gt; action=paste:&lt;/li&gt;
&lt;li&gt;&amp;nbsp; macm Edit.Select\ All&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;key=&amp;lt;D-A&amp;gt; action=selectAll:&lt;/li&gt;
&lt;li&gt;endif&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;之所以要取消MacVim默认的一些快捷键是因为它们都占用了cmd苹果键，而我习惯用这个键来替代ctrl在vim里的作用（在mbp的键盘上就算我想用ctrl也不方便……），不过其中有几个快捷键是非常非常有价值的，比如保存（省去了输入:w的麻烦），全选（否则要摁六下：ggVG），复制粘贴剪切（否则为了使用剪贴板，比如猛摁这种玩意：&amp;#8221;+y，还不能在插入模式下使用 ），幸好它们的快捷键都不跟vim其他操作冲突，所以自己设置。为了完全删除MacVim默认的cmd快捷键，还需要打开app中自带的vimrc文件（可以这样编辑：:tabe $VIM/vimrc ），删除末尾那些macm开头的代码。&lt;br /&gt;
&lt;br/&gt;&lt;br /&gt;
MacVim的安装包里包含一个mvim，是像gvim一样的脚本，用来在命令行中调用GUI版的vim，但是mvim默认会在新窗口打开文件，我相信多数人都喜欢在当前窗口的新标签页里打开罢，需要在命令后加&amp;#8211;remote-tab参数，不过&lt;a href=&quot;http://webexpose.org/2008/10/13/open-macvim-tabs-from-command-line&quot; target=&quot;_blank&quot;&gt;这篇文章&lt;/a&gt;里给出了直接修改脚本的方法，把mvim底部从# Last step:  fire up vim开始的部分删掉，改成：&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;tabs=true &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;# Last step:&amp;nbsp; fire up vim. &lt;/li&gt;
&lt;li&gt;if [ &amp;quot;$gui&amp;quot; ]; then &lt;/li&gt;
&lt;li&gt;	if $tabs &amp;amp;&amp;amp; [[ `$binary --serverlist` = &amp;quot;VIM&amp;quot; ]]; then&lt;/li&gt;
&lt;li&gt;	&amp;nbsp; &amp;nbsp;	exec &amp;quot;$binary&amp;quot; -g $opts --remote-tab-silent ${1:+&amp;quot;$@&amp;quot;} &lt;/li&gt;
&lt;li&gt;	else &lt;/li&gt;
&lt;li&gt;		exec &amp;quot;$binary&amp;quot; -g $opts ${1:+&amp;quot;$@&amp;quot;} &lt;/li&gt;
&lt;li&gt;	fi &lt;/li&gt;
&lt;li&gt;else &lt;/li&gt;
&lt;li&gt;	exec &amp;quot;$binary&amp;quot; $opts ${1:+&amp;quot;$@&amp;quot;} &lt;/li&gt;
&lt;li&gt;fi&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;P.S. 上面给出的那个blog不能直接打开，也许是需要翻墙，不过我顺便介绍一个很方便的利用google网页快照的方法～ 用&lt;a href=&quot;http://translate.google.cn/translate_t#zh-CN|en|&quot; target=&quot;_blank&quot;&gt;谷歌翻译&lt;/a&gt;打开这个网址 XD&lt;br /&gt;
&lt;br/&gt;&lt;br /&gt;
刚安装好的MacVim打开gb编码的文件仍然把中文显示成乱码（好无奈，GBK编码是土豆网的历史遗留问题，页面里的script标签也几乎都没加charset=&amp;#8221;utf-8&amp;#8243;，所以大部分js文件都只好用gb18030的编码，textmate正是因为不支持gb编码才被我降为二等公民的，其实我有正版cdkey……），我在.vimrc里加上了encoding似乎能解决这个问题：&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;set encoding=utf-8&lt;/li&gt;
&lt;li&gt;set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;解释一下：对于编码，vim里有三个设置选项，encoding是设置vim以何种编码显示文件（缩写enc），fileencoding是当前文件实际的编码（缩写fenc）， 而fileencodings指示vim如何解码（缩写fencs），因此vim在打开一个文件时实际上会先根据fileencodings里的列表反复测试，直到成功解码，转换成encoding指定的编码，然后正常显示，转码的过程是用iconv实现的（所以windows上用vim还要配置iconv的dll路径和参数……麻烦），保存的时候会根据fileencoding来保存，跟是否显示为乱码没有关系。&lt;/p&gt;
&lt;p&gt;所以如果想转换一个文件的编码，比如从utf-8转换到gb18030，可以在编辑器中直接输入两个命令：&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;:set enc=gb18030&lt;/li&gt;
&lt;li&gt;:set fenc=gb18030&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;然后保存就ok了～其实如果不用继续编辑的话，第一行都可以省去，因为它的目的只是让编辑器用gb18030来显示当前文件，避免乱码，但是并不影响文件保存时的编码和正确性。&lt;/p&gt;
&lt;p&gt;以前我都是依赖mac上的&lt;a href=&quot;http://www.panic.com/coda/&quot; target=&quot;_blank&quot;&gt;Coda&lt;/a&gt;来转换编码（确实最方便）……vim又成功了抢了它的饭碗……&lt;br /&gt;
&lt;br/&gt;&lt;br /&gt;
MacVim还有一个问题是会显示一个很宅很不人性的标签栏名称，比如我编辑/usr/local/bin/mvim这个文件，标签栏上写的是“/u/l/b/mvim”，如果目录结构再深一点就看不到真正的文件名了，在.vimrc里加入下面这行可以让标签栏只显示文件名：&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;set guitablabel=%t&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;&lt;br/&gt;&lt;br /&gt;
上次的.vimrc里还增加了两处很重要的设置，主要是受这位老爷写的&lt;a href=&quot;http://easwy.com/blog/archives/advanced-vim-skills-catalog/&quot; target=&quot;_blank&quot;&gt;《vim使用进阶》&lt;/a&gt;的启发，首先是让.vimrc每次编辑保存后自动生效，避免重启：&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;autocmd! bufwritepost .vimrc source ~/.vimrc&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;autocmd实际上是vim脚本的事件机制，表示在某个事件触发后自动执行的命令&lt;br /&gt;
&lt;br/&gt;&lt;br /&gt;
接下来要实现的是保存和恢复编辑器的当前状态，类似Eclipse的Workspace，不过vim的session更强大，几乎可以还原一切状态……&lt;a href=&quot;http://easwy.com/blog/archives/advanced-vim-skills-session-file-and-viminfo/&quot; target=&quot;_blank&quot;&gt;Easwy老爷介绍的命令&lt;/a&gt;比较繁琐，缺乏“一键恢复”的快感……身为一个习惯使用“高级语言”的程序员，在这种时候就抑制不住继续封装和提高抽象层的欲望……所以自定义了以下两个命令：&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;function! GetMySession(spath, ssname)&lt;/li&gt;
&lt;li&gt;	if a:ssname == 0&lt;/li&gt;
&lt;li&gt;		let a:sname = &amp;quot;&amp;quot;&lt;/li&gt;
&lt;li&gt;	else&lt;/li&gt;
&lt;li&gt;		let a:sname = &amp;quot;-&amp;quot;.a:ssname&lt;/li&gt;
&lt;li&gt;	endif&lt;/li&gt;
&lt;li&gt;	execute &amp;quot;source $&amp;quot;.a:spath.&amp;quot;/session&amp;quot;.a:sname.&amp;quot;.vim&amp;quot;&lt;/li&gt;
&lt;li&gt;	execute &amp;quot;rviminfo $&amp;quot;.a:spath.&amp;quot;/session&amp;quot;.a:sname.&amp;quot;.viminfo&amp;quot;&lt;/li&gt;
&lt;li&gt;	execute &amp;quot;echo \&amp;quot;Load Success\: $&amp;quot;.a:spath.&amp;quot;/session&amp;quot;.a:sname.&amp;quot;.vim\&amp;quot;&amp;quot;&lt;/li&gt;
&lt;li&gt;endfunction&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;function! SetMySession(spath, ssname)&lt;/li&gt;
&lt;li&gt;	if a:ssname == 0&lt;/li&gt;
&lt;li&gt;		let a:sname = &amp;quot;&amp;quot;&lt;/li&gt;
&lt;li&gt;	else&lt;/li&gt;
&lt;li&gt;		let a:sname = &amp;quot;-&amp;quot;.a:ssname&lt;/li&gt;
&lt;li&gt;	endif&lt;/li&gt;
&lt;li&gt;	execute &amp;quot;cd $&amp;quot;.a:spath&lt;/li&gt;
&lt;li&gt;	execute &amp;quot;mksession! $&amp;quot;.a:spath.&amp;quot;/session&amp;quot;.a:sname.&amp;quot;.vim&amp;quot;&lt;/li&gt;
&lt;li&gt;	execute &amp;quot;wviminfo! $&amp;quot;.a:spath.&amp;quot;/session&amp;quot;.a:sname.&amp;quot;.viminfo&amp;quot;&lt;/li&gt;
&lt;li&gt;	execute &amp;quot;echo \&amp;quot;Save Success\: $&amp;quot;.a:spath.&amp;quot;/session&amp;quot;.a:sname.&amp;quot;.vim\&amp;quot;&amp;quot;&lt;/li&gt;
&lt;li&gt;endfunction&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;quot; load session from certain path&lt;/li&gt;
&lt;li&gt;command! -nargs=+ LOAD call GetMySession(&amp;lt;f-args&amp;gt;) &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;quot; load session from certain path&lt;/li&gt;
&lt;li&gt;command! -nargs=+ SAVE call SetMySession(&amp;lt;f-args&amp;gt;)&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;为了用最简单的方法选择路径，使用时需要先在终端的初始化脚本（比如~/.bashrc，在我的OSX系统里通常用~/.profile）里添加相应的环境变量，比如我常用的三个路径：&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;export TUISVN=&amp;quot;/Users/dexteryy/Sites/Tudou/ui/ui/&amp;quot;&lt;/li&gt;
&lt;li&gt;export TUIDEV=&amp;quot;/Volumes/ui.tudou.com/&amp;quot;&lt;/li&gt;
&lt;li&gt;export MYWEB=&amp;quot;/Users/dexteryy/Sites/www/&amp;quot;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;当我在MYWEB的路径下做项目的时候，如果需要保存当前状态，只要输入:SAVE MYWEB 0就行了，这里的0是因为考虑到在同一个工作目录里可能需要使用到不同文件组合的工作区，提供的一个简单的版本号，这段命令执行后会在/Users/dexteryy/Sites/www/目录里生成两个文件： session.viminfo和session.vim，如果版本号是大于0的整数，比如2，文件名会是session2.viminfo和session2.viminfo&lt;/p&gt;
&lt;p&gt;需要恢复的时候只要输入命令：:LOAD MYWEB 0  就行叻～&lt;/p&gt;
&lt;p&gt;喔对了，为了能在VIM命令里使用bash中定义的变量，你需要在MacVim的preferences里把“Launch Vim processes in a login shell”勾选，熟悉Mac应用的同学应该都能想到这个设置会记录在/Library/Preferences/或~/Library/Preferences/里的某个配置文件里，MacVim对应的是~/Library/Preferences/org.vim.MacVim.plist，所以你也可以直接用这个命令在终端里修改：&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;defaults write org.vim.MacVim MMLoginShell 1&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;如果使用的是Gvim或windows版本的vim，也可以直接把路径变量写在.vimrc里，比如：&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;let g:TUISVN=&amp;quot;/Users/dexteryy/Sites/Tudou/ui/ui/&amp;quot;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;然后修改上面的两个函数GetMySession和SetMySession，把a:spath前面的$都删掉…………因为VIM里的变量只能由大写字母开头……&lt;/p&gt;
&lt;p&gt;完整的&lt;a href=&quot;http://code.google.com/p/yy-vimscript/source/browse/trunk/vimrc&quot;&gt;.vimrc&lt;/a&gt;在这里…………呃好罢我发现google code真是备份和维护配置脚本的好地方XD&lt;br /&gt;
&lt;br/&gt;&lt;br /&gt;
最后继续讨论一下插件～&lt;/p&gt;
&lt;p&gt;首先是&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=273&quot; target=&quot;_blank&quot;&gt;Taglist&lt;/a&gt;，这是一个能让vim具备类似Aptana的&lt;a href=&quot;http://aptana.com/docs/index.php/Displaying_the_Outline_View&quot; target=&quot;_blank&quot;&gt;Outline View&lt;/a&gt;的功能，还能像JAVA的IDE那样通过类名和方法名直接跳转到相应的源码，它借助了一个叫ctags的工具，可以解析源码生成标签文件（在同一个名录下，叫tags），详细的介绍请参考&lt;a href=&quot;http://easwy.com/blog/archives/advanced-vim-skills-use-ctags-tag-file/&quot; target=&quot;_blank&quot;&gt;Easwy老爷的文章&lt;/a&gt;，记得务必安装最新版的Exuberant Ctags……我是用MacPorts装的：sudo port install ctags&lt;/p&gt;
&lt;p&gt;Exuberant Ctags号称支持34种语言，包括javascript，但是它对javascript的理解非常OUT……比如现在定义JS方法几乎主要依靠匿名函数了，ctags却无法识别这种形式……&lt;/p&gt;
&lt;p&gt;已经&lt;a href=&quot;http://weblogs.asp.net/george_v_reilly/archive/2009/03/24/exuberant-ctags-and-javascript.aspx&quot; target=&quot;_blank&quot;&gt;有人&lt;/a&gt;在尝试自己添加匹配规则，我自己也写了一大坨：&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;--langdef=js&lt;/li&gt;
&lt;li&gt;--langmap=js:.js&lt;/li&gt;
&lt;li&gt;--regex-js=/[ \t.]([A-Z][A-Z0-9._$]+)[ \t]*=[ \t]*[0-9&amp;quot;'\[\{]/\1/n,constant/&lt;/li&gt;
&lt;li&gt;--regex-js=/([A-Za-z0-9._$]+)[ \t]*=[ \t]*\{/\1/o,object/&lt;/li&gt;
&lt;li&gt;--regex-js=/['&amp;quot;]*([A-Za-z0-9_$]+)['&amp;quot;]*[ \t]*:[ \t]*\{/\1/o,object/&lt;/li&gt;
&lt;li&gt;--regex-js=/([A-Za-z0-9._$]+)\[[&amp;quot;']([A-Za-z0-9_$]+)[&amp;quot;']\][ \t]*=[ \t]*\{/\1\.\2/o,object/&lt;/li&gt;
&lt;li&gt;--regex-js=/([A-Za-z0-9._$]+)\.prototype[ \t.=]/\1/c,class/&lt;/li&gt;
&lt;li&gt;--regex-js=/([A-Za-z0-9._$]+)[ \t]*=[ \t]*\(function\(\)/\1/c,class/&lt;/li&gt;
&lt;li&gt;--regex-js=/['&amp;quot;]*([A-Za-z0-9_$]+)['&amp;quot;]*:[ \t]*\(function\(\)/\1/c,class/&lt;/li&gt;
&lt;li&gt;--regex-js=/var[ \t]*([A-Za-z$][A-Za-z0-9_$()]+)[ \t]*=[ \t]*function[ \t]*\(/\1/f,function/&lt;/li&gt;
&lt;li&gt;--regex-js=/function[ \t]+([A-Za-z$][A-Za-z0-9_$]+)[ \t]*\(([^)])\)/\1/f,function/&lt;/li&gt;
&lt;li&gt;--regex-js=/['&amp;quot;]*([A-Za-z$][A-Za-z0-9_$]+)['&amp;quot;]*:[ \t]*function[ \t]*\(/\1/m,method/&lt;/li&gt;
&lt;li&gt;--regex-js=/([A-Za-z$][A-Za-z0-9_$]+)[ \t]*=[ \t]*function[ \t]*\(/\1/m,method/&lt;/li&gt;
&lt;li&gt;--regex-js=/([A-Za-z0-9_$]+)\[[&amp;quot;']([A-Za-z0-9_$]+)[&amp;quot;']\][ \t]*=[ \t]*function[ \t]*\(/\2/m,method/&lt;/li&gt;
&lt;li&gt;--regex-js=/([A-Za-z0-9._$]+)[ \t]*=[ \t]*\[/\1/a,array/&lt;/li&gt;
&lt;li&gt;--regex-js=/['&amp;quot;]*([A-Za-z$][A-Za-z0-9_$]+)['&amp;quot;]*:[ \t]*\[/\1/a,array/&lt;/li&gt;
&lt;li&gt;--regex-js=/([A-Za-z0-9._$]+)\[[&amp;quot;']([A-Za-z0-9_$]+)[&amp;quot;']\][ \t]*=[ \t]*\[/\1\.\2/a,array/&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;匹配以下语法形式，其中粗体部分是标签名称：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;var &lt;strong&gt;MY_CONSTANT&lt;/strong&gt; = 250; //constant&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ns.myobject&lt;/strong&gt; = {}; //object&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;myobject&lt;/strong&gt;: {}, //object&lt;/li&gt;
&lt;li&gt;ns[&amp;#8221;myobject&amp;#8221;] = {}; //object, 生成的tag是&amp;#8221;&lt;strong&gt;ns.myobject&lt;/strong&gt;&amp;#8220;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ns.myclass&lt;/strong&gt;.prototype.myfunc = function(){}; //class&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ns.myclass &lt;/strong&gt;= (function(){return {};}); //class&lt;/li&gt;
&lt;li&gt;ns[&amp;#8221;myclass&amp;#8221;] = (function(){return {};}); //class, 生成的tag是&amp;#8221;&lt;strong&gt;ns.myclass&lt;/strong&gt;&amp;#8220;&lt;/li&gt;
&lt;li&gt;var &lt;strong&gt;myfunc&lt;/strong&gt; = function(){}; //function, 必须有var, _开头的忽略&lt;/li&gt;
&lt;li&gt;function &lt;strong&gt;myfunc&lt;/strong&gt;(){}; //function&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;myfunc&lt;/strong&gt;: function(){} //method&lt;/li&gt;
&lt;li&gt;ns.&lt;strong&gt;myfunc&lt;/strong&gt; = function(){}; //method&lt;/li&gt;
&lt;li&gt;ns[&amp;#8221;myfunc&amp;#8221;] = function(){}; //method, 生成的tag是&amp;#8221;ns.&lt;strong&gt;myfunc&lt;/strong&gt;&amp;#8220;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ns.myarray&lt;/strong&gt; = []; //array&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;myarray&lt;/strong&gt;: [], //array&lt;/li&gt;
&lt;li&gt;ns[&amp;#8221;myarray&amp;#8221;] = []; //array, 生成的tag是&amp;#8221;&lt;strong&gt;ns.myarray&lt;/strong&gt;&amp;#8220;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;使用方法是建一个~/.ctags文件，把上面那段代码放进去就行。为了在taglist窗口里显示类别（比如class和method），还需要在.vimrc里设置一个变量：&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;let g:tlist_javascript_settings = 'javascript;f:function;c:class;o:object;m:method;s:string;a:array;n:constant'&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;&lt;br/&gt;&lt;br /&gt;
另一个要强烈推荐的插件是&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1218&quot; target=&quot;_blank&quot;&gt;NERD Commenter&lt;/a&gt;，从名字能看出跟上次推荐的NERD Tree是同一个强者写的，功能是针对各种文件类型快速的添加和删除注释，除了单行，多行，还提供“sexily”的注释……比如js里添加文档内容时常用的那种（如果首行写成/**，在aptana里会认作script doc格式）&lt;/p&gt;
&lt;p&gt;不过这个插件默认使用了大量,c开头的快捷键……而,在vim里一般都用作自定义的&lt;leader&gt;键（&lt;leader&gt;的默认值是\，很显然小拇指没食指方便……），我没有找到相关的设置选项……所以直接&lt;a href=&quot;http://code.google.com/p/yy-vimscript/source/diff?spec=svn7&amp;#038;r=7&amp;#038;format=side&amp;#038;path=/trunk/plugin/NERD_commenter.vim&quot; target=&quot;_blank&quot;&gt;修改&lt;/a&gt;了插件脚本……&lt;br /&gt;
&lt;br/&gt;&lt;br /&gt;
唔唔就先写到这里罢，虽然vim无论日常使用还是hack都很爽，但是写起来还是挺枯燥的，头有点晕555……&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/333038670/dexteryy/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dexteryy/~6072067/333038670/4180063/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/dexteryy/333038670/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/dexteryy/333038670/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;fsflare&quot;&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=69eba6a6b30eda1f2055d00257b77ba9&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=69eba6a6b30eda1f2055d00257b77ba9&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=3783433a05a3fd9dfff0527494a37c16&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=3783433a05a3fd9dfff0527494a37c16&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=88284af3bd702a6a81ceb7f5d4754ec5&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=88284af3bd702a6a81ceb7f5d4754ec5&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.limboy.com/2009/06/07/vim-setting-more/feed/</wfw:commentRss><description>首先要补充一些MacVim的配置，其实写上篇文章的时候我还在用已经过时的基于Carbon界面的vim for osx，更接近传统的unix版本，但是好久没更新，只支持vim6.0，soureforge上有一个7.2的版本，bug诸多，其中的乱码和字体抗锯齿的问题让我完全无法忍。而MacVim是基于Cocoa开发，支持到7.2，还含有很多讨好mac用户的设计，比如对标签的良好支持，华丽的界面（背景颜色支持透明度，字体抗锯齿更漂亮，几乎跟TextMate的效果没区别）……非常后悔以前没仔细试用这个版本！目前为止只发现行高linespace的设置会无法生效，不过这个bug在最新的快照版里已经修正了。
&lt;span class=&quot;readmore&quot;&gt;&lt;a href=&quot;http://www.limboy.com/2009/06/07/vim-setting-more/&quot; title=&quot;继续补充vim配置技巧——上次的vimrc还不够强力&quot; target=&quot;_blank&quot;&gt;阅读全文——共6930字&lt;/a&gt;&lt;/span&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/333038670/dexteryy/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dexteryy/~6072067/333038670/4180063/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/dexteryy/333038670/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/dexteryy/333038670/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;fsflare&quot;&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=69eba6a6b30eda1f2055d00257b77ba9&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=69eba6a6b30eda1f2055d00257b77ba9&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=3783433a05a3fd9dfff0527494a37c16&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=3783433a05a3fd9dfff0527494a37c16&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=88284af3bd702a6a81ceb7f5d4754ec5&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=88284af3bd702a6a81ceb7f5d4754ec5&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/p&gt;</description><category>OpenSource</category><category>工具</category><category>代码</category><category>JavaScript</category><pubDate>Sun, 07 Jun 2009 02:52:27 +0800</pubDate><author>dexter_yy</author><comments>http://www.limboy.com/2009/06/07/vim-setting-more/#comments</comments><guid isPermaLink="false">http://www.limboy.com/2009/06/07/vim-setting-more/</guid><dc:creator>dexter_yy</dc:creator><fs:srclink>http://www.limboy.com/2009/06/07/vim-setting-more/</fs:srclink><fs:srcfeed>http://www.limboy.com/feed/rss2/</fs:srcfeed><fs:itemid>feedsky/dexteryy/~6072067/333038670/4180063</fs:itemid></item><item><title>面向前端开发者和TextMate粉丝的vim配置</title><link>http://item.feedsky.com/~feedsky/dexteryy/~6072067/333038671/4180063/1/item.html</link><content:encoded>&lt;p&gt;&lt;a href='http://www.limboy.com/2009/05/30/vim-setting/vim-editor-icon1png/' rel='attachment wp-att-235' title='vim-editor-icon1.png'&gt;&lt;img src='http://www.limboy.com/wp-content/uploads/2009/05/vim-editor-icon1.png' alt='vim-editor-icon1.png' style=&quot;float:left;border:0;margin:0 0 0px 10px;&quot; /&gt;&lt;/a&gt;&lt;a href='http://www.limboy.com/wp-content/uploads/2009/05/textmate.png' title='textmate.png'&gt;&lt;img src='http://www.limboy.com/wp-content/uploads/2009/05/textmate.png' alt='textmate.png' style=&quot;float:left;border:0;margin:0 10px 0px 0px;&quot; /&gt;&lt;/a&gt;vim是编辑器中的神器，但是因为学习曲线比较陡，界面也仿佛从石器时代穿越，广大fashion的前端工作者们难免对其有距离感。其实vim最大的萌点有两个，其一是百科全书般的文本编辑功能，其二是可以随意定制，满足任何与编辑器相关的需求和偏好，比如下面这张便是我在macbook pro上运行vim的截图，不仅语法高亮可以冒充&lt;a href=&quot;http://macromates.com/&quot; target=&quot;_blank&quot;&gt;TextMate&lt;/a&gt;，功能也几乎一致。&lt;/p&gt;
&lt;p&gt;&lt;a href='http://www.limboy.com/wp-content/uploads/2009/05/picture-4.png' title='picture-4.png'&gt;&lt;img src='http://www.limboy.com/wp-content/uploads/2009/05/picture-4.png' alt='picture-4.png' style=&quot;width:400px;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;首先是做一个初始化配置脚本，在我的OSX10.5里是是~/.vimrc文件，这里只列出一些需要补充进去的设置：&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&amp;quot;设置语法高亮的配色，在GUI界面里使用我自定义的yytextmate.vim&lt;/li&gt;
&lt;li&gt;if has(&amp;quot;gui_running&amp;quot;)&lt;/li&gt;
&lt;li&gt;	colorscheme yytextmate&lt;/li&gt;
&lt;li&gt;else&lt;/li&gt;
&lt;li&gt;	colorscheme slate&lt;/li&gt;
&lt;li&gt;endif&lt;/li&gt;
&lt;li&gt;&amp;quot;查找编码的规则（vim7默认都用utf-8，打开包含gbk字符的文件会出现乱码）&lt;/li&gt;
&lt;li&gt;set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936&lt;/li&gt;
&lt;li&gt;&amp;quot;GUI界面里的字体，默认有抗锯齿&lt;/li&gt;
&lt;li&gt;set guifont=Monaco:h12:cANSI&lt;/li&gt;
&lt;li&gt;&amp;quot;行间距，如果默认值太小，代码会非常纠结&lt;/li&gt;
&lt;li&gt;set linespace=4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &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;/li&gt;
&lt;li&gt;&amp;quot;用&amp;lt;&amp;gt;调整缩进时的长度&lt;/li&gt;
&lt;li&gt;set shiftwidth=4 &lt;/li&gt;
&lt;li&gt;&amp;quot;制表符的长度，统一为4个空格的宽度&lt;/li&gt;
&lt;li&gt;set tabstop=4&lt;/li&gt;
&lt;li&gt;&amp;quot;初始窗口的宽度&lt;/li&gt;
&lt;li&gt;set columns=195&lt;/li&gt;
&lt;li&gt;&amp;quot;初始窗口的高度&lt;/li&gt;
&lt;li&gt;set lines=45&lt;/li&gt;
&lt;li&gt;&amp;quot;初始窗口的位置&lt;/li&gt;
&lt;li&gt;winpos 52 42&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;quot;显示行号&lt;/li&gt;
&lt;li&gt;set number&lt;/li&gt;
&lt;li&gt;&amp;quot;行号栏的宽度&lt;/li&gt;
&lt;li&gt;set numberwidth=4&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;quot;禁止自动换行&lt;/li&gt;
&lt;li&gt;set nowrap&lt;/li&gt;
&lt;li&gt;&amp;quot;在输入命令时列出匹配项目，也就是截图底部的效果&lt;/li&gt;
&lt;li&gt;set wildmenu&lt;/li&gt;
&lt;li&gt;&amp;quot;显示光标位置&lt;/li&gt;
&lt;li&gt;set ruler&lt;/li&gt;
&lt;li&gt;&amp;quot;分割窗口时保持相等的宽/高&lt;/li&gt;
&lt;li&gt;set equalalways&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;quot;匹配括号的规则，增加针对html的&amp;lt;&amp;gt;&lt;/li&gt;
&lt;li&gt;set matchpairs=(:),{:},[:],&amp;lt;:&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;quot;让退格，空格，上下箭头遇到行首行尾时自动移到下一行（包括insert模式）&lt;/li&gt;
&lt;li&gt;set whichwrap=b,s,&amp;lt;,&amp;gt;,[,]&lt;/li&gt;
&lt;li&gt;&amp;quot;取消自动备份&lt;/li&gt;
&lt;li&gt;set nobackup&lt;/li&gt;
&lt;li&gt;&amp;quot;保存关闭文件之前保留一个备份&lt;/li&gt;
&lt;li&gt;set writebackup&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;quot;js语法高亮脚本的设置&lt;/li&gt;
&lt;li&gt;let g:javascript_enable_domhtmlcss=1&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;quot;设置自定义的&amp;lt;leader&amp;gt;快捷键&lt;/li&gt;
&lt;li&gt;let mapleader=&amp;quot;,&amp;quot;&lt;/li&gt;
&lt;li&gt;let g:mapleader=&amp;quot;,&amp;quot;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;/li&gt;
&lt;li&gt;&amp;quot; bufExplorer插件的设置&lt;/li&gt;
&lt;li&gt;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;/li&gt;
&lt;li&gt;let g:bufExplorerSortBy='mru'&lt;/li&gt;
&lt;li&gt;let g:bufExplorerSplitRight=0&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/li&gt;
&lt;li&gt;let g:bufExplorerSplitVertical=1&amp;nbsp; &amp;nbsp; .&lt;/li&gt;
&lt;li&gt;let g:bufExplorerSplitVertSize = 30&amp;nbsp; &lt;/li&gt;
&lt;li&gt;let g:bufExplorerUseCurrentWindow=1&amp;nbsp; &lt;/li&gt;
&lt;li&gt;autocmd BufWinEnter \[Buf\ List\] setl nonumber&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;/li&gt;
&lt;li&gt;&amp;quot; winManager插件的设置&lt;/li&gt;
&lt;li&gt;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;/li&gt;
&lt;li&gt;let g:winManagerWindowLayout = &amp;quot;BufExplorer,FileExplorer|TagList&amp;quot;&lt;/li&gt;
&lt;li&gt;let g:winManagerWidth = 30&lt;/li&gt;
&lt;li&gt;let g:defaultExplorer = 0&lt;/li&gt;
&lt;li&gt;nmap &amp;lt;silent&amp;gt; &amp;lt;leader&amp;gt;wm :WMToggle&amp;lt;cr&amp;gt; &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;/li&gt;
&lt;li&gt;&amp;quot; netrw插件的快捷键&lt;/li&gt;
&lt;li&gt;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;/li&gt;
&lt;li&gt;let g:netrw_winsize = 30&lt;/li&gt;
&lt;li&gt;nmap &amp;lt;silent&amp;gt; &amp;lt;leader&amp;gt;fe :Sexplore!&amp;lt;cr&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;/li&gt;
&lt;li&gt;&amp;quot; NERDTree插件的快捷键&lt;/li&gt;
&lt;li&gt;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;/li&gt;
&lt;li&gt;nmap &amp;lt;silent&amp;gt; &amp;lt;leader&amp;gt;nt :NERDTree&amp;lt;cr&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;quot;把常用的ctrl快捷键映射到苹果键上（只保留cmd+c/cmd+v/cmd+z原有的功能）&lt;/li&gt;
&lt;li&gt;map &amp;lt;D-y&amp;gt; &amp;lt;C-y&amp;gt;&lt;/li&gt;
&lt;li&gt;map &amp;lt;D-e&amp;gt; &amp;lt;C-e&amp;gt;&lt;/li&gt;
&lt;li&gt;map &amp;lt;D-f&amp;gt; &amp;lt;C-f&amp;gt;&lt;/li&gt;
&lt;li&gt;map &amp;lt;D-b&amp;gt; &amp;lt;C-b&amp;gt;&lt;/li&gt;
&lt;li&gt;map &amp;lt;D-u&amp;gt; &amp;lt;C-u&amp;gt;&lt;/li&gt;
&lt;li&gt;map &amp;lt;D-d&amp;gt; &amp;lt;C-d&amp;gt;&lt;/li&gt;
&lt;li&gt;map &amp;lt;D-w&amp;gt; &amp;lt;C-w&amp;gt;&lt;/li&gt;
&lt;li&gt;map &amp;lt;D-r&amp;gt; &amp;lt;C-r&amp;gt;&lt;/li&gt;
&lt;li&gt;map &amp;lt;D-o&amp;gt; &amp;lt;C-o&amp;gt;&lt;/li&gt;
&lt;li&gt;map &amp;lt;D-i&amp;gt; &amp;lt;C-i&amp;gt;&lt;/li&gt;
&lt;li&gt;map &amp;lt;D-g&amp;gt; &amp;lt;C-g&amp;gt;&lt;/li&gt;
&lt;li&gt;map &amp;lt;D-p&amp;gt; &amp;lt;C-p&amp;gt;&lt;/li&gt;
&lt;li&gt;map &amp;lt;D-n&amp;gt; &amp;lt;C-n&amp;gt;&lt;/li&gt;
&lt;li&gt;map &amp;lt;D-a&amp;gt; &amp;lt;C-a&amp;gt;&lt;/li&gt;
&lt;li&gt;cmap &amp;lt;D-d&amp;gt; &amp;lt;C-d&amp;gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;2009.6.7更新：最新的&lt;a href=&quot;http://code.google.com/p/yy-vimscript/source/browse/trunk/vimrc&quot; target=&quot;_blank&quot;&gt;vimrc&lt;/a&gt;和其他脚本已经上传到google code的项目仓库里了&lt;br /&gt;
&lt;br/&gt;&lt;br /&gt;
=================步骤二的分割线===================&lt;br /&gt;
&lt;br/&gt;&lt;br /&gt;
然后在个人配置目录里添加语法高亮脚本（~/.vim/syntax/），其中html和css可以直接把vim7自带的脚本复制出来（$VIMRUNTIME/syntax/），js的脚本则推荐用这个：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1491&quot; target=&quot;_blank&quot;&gt;JavaScript syntax : Better JavaScrirpt syntax support&lt;br /&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;包含更多的关键字以及自动折叠代码的功能，也能在html文件内支持js语法高亮，需要注意的是如果要支持dom方法的关键字，需要在.vimrc里设置一个全局变量javascript_enable_domhtmlcss&lt;/p&gt;
&lt;p&gt;我还用了这里的&lt;a href=&quot;htmhttp://www.fleiner.com/vim/download.html&quot; target=&quot;_blank&quot;&gt;html.vim&lt;/a&gt;。&lt;br /&gt;
&lt;br/&gt;&lt;br /&gt;
=================步骤三的分割线===================&lt;br /&gt;
&lt;br/&gt;&lt;br /&gt;
接下来就可以对照着syntax脚本，给每个语法组设置颜色，配色脚本需要放到~/.vim/colors/里，然后在.vimrc里用colorscheme命令选定。colors脚本只需要一个，因为syntax脚本末尾都会把自定义的语法组链接到标准语法组，比如：&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;HiLink javaScriptDocComment&amp;nbsp; Comment&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;所以只需要定义一套针对标准语法组的配色方案，再通过修改syntax脚本里来调整相应语言的配色。我尝试过针对不同文件类型使用不同的配色方案，发现相当麻烦，需要在切换/打开/关闭缓冲区和窗口的时候都用colorscheme重置配色：&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;autocmd BufNewFile,BufRead,BufEnter,WinEnter,FileType *.html,*.htm colorscheme delek&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;而且colorscheme会影响整个窗口（一个vim进程实例），如果在窗口内同时分割显示了几个文件，即使文件类型不同，也会同时改变颜色……&lt;/p&gt;
&lt;p&gt;我平时最喜欢TextMate的Blackboard主题（大概是因为里面有橙色罢XD），在Aptana上也仿制过（配置文件：&lt;a href=&quot;http://www.limboy.com/conf/eclipse/yytextmate.col&quot; target=&quot;_blank&quot;&gt;yytextmate.col&lt;/a&gt;），这次是直接在vim的slate主题基础上修改出来的，比vim.org上面那个&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2280&quot; target=&quot;_blank&quot;&gt;blackboard.vim&lt;/a&gt;要更完善～&lt;/p&gt;
&lt;p&gt;我的colors脚本：&lt;a href=&quot;http://code.google.com/p/yy-vimscript/source/browse/trunk/colors/yytextmate.vim&quot; target=&quot;_blank&quot;&gt;yytextmate.vim&lt;/a&gt;&lt;br /&gt;
我调整过的syntax脚本：&lt;a href=&quot;http://code.google.com/p/yy-vimscript/source/browse/trunk/syntax/javascript.vim&quot; target=&quot;_blank&quot;&gt;javascript.vim&lt;/a&gt;, &lt;a href=&quot;http://code.google.com/p/yy-vimscript/source/browse/trunk/syntax/html.vim&quot; target=&quot;_blank&quot;&gt;html.vim&lt;/a&gt;&lt;br /&gt;
&lt;br/&gt;&lt;br /&gt;
=================步骤四的分割线===================&lt;br /&gt;
&lt;br/&gt;&lt;br /&gt;
按照由外向内的顺序，现在该折腾功能了，首先是缩进插件，vim也自带有智能缩进功能，需要开启autoindent和smartindent参数，但是在编辑js代码的时候效果很不好，对于python这种靠缩进活命的语言就更不能忍了，因此至少需要装以下三个插件：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1839&quot;  target=&quot;_blank&quot;&gt;IndentAnything : Write indentations or enhance existing indentations without writing code&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1840&quot;  target=&quot;_blank&quot;&gt;Javascript Indentation : Indentation for Javascript &lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=974&quot;  target=&quot;_blank&quot;&gt;indent/python.vim : An alternative indentation script for python&lt;br /&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;第一个放到~/.vim/plugin/里，后两个放在~/.vim/indent/里&lt;br /&gt;
&lt;br/&gt;&lt;br /&gt;
=================步骤五的分割线===================&lt;br /&gt;
&lt;br/&gt;&lt;br /&gt;
&lt;a href='http://www.limboy.com/wp-content/uploads/2009/05/textmate.png' title='textmate.png'&gt;&lt;img src='http://www.limboy.com/wp-content/uploads/2009/05/textmate.png' alt='textmate.png' style=&quot;float:left;border:0;margin:0 10px 10px 0;&quot; /&gt;&lt;/a&gt;接下来终于要来实现TextMate最重要的功能了，TextMate之所以被称作地上最贵麦上最强的编辑器，就是因为支持大量可以通过tab或其他快捷键发动的强力Bundles，这些Bundles可以分为两种类型，一种是针对编辑器的内容执行指令（称作command），比如直接执行shell脚本，压缩js代码，对html转义，格式化JSON，编译swf等等，而指令界面是vim的核心，不但可以直接执行shell命令，也可以通过设置键位映射和宏，把复杂的操作绑定成简单的快捷键，因此这类功能原本就是vim的强项。&lt;/p&gt;
&lt;p&gt;另一种类型的Bundles主要用来帮助程序员快速开发，通过简短的缩写＋tab键直接生成所需的代码模板（称作snippet），然后依然用tab在模板中需要改动的位置之间跳转，整个过程不需要鼠标定位，非常高效，是一种比大型IDE里常见的&amp;#8221;code hinting&amp;#8221;更实用的智能补全功能。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2540&quot;  target=&quot;_blank&quot;&gt;snipMate : TextMate-style snippets for Vim&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;上面这个非常“新”的插件让vim也具备了同样的功能，而且几乎是跟TextMate完全兼容的移植，比如这是从TextMate里取出的snippet源码：&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Gray;&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;class_name&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;prototype&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.$&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;method_name&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;first_argument&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;})&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; $&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;// body...}&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;${}标签是代码插入后可以通过tab跳转的“可编辑”位置，其中的序号表示跳转顺序，冒号后的字符是默认内容。这段代码只要在前面加上snippet proto就可以直接放进~/.vim/snippets/javascript.snippets里，通过proto&lt;tab&gt;触发&lt;/p&gt;
&lt;p&gt;把常见的程序结构抽象成snippet可以节省很多重复输入，比如这是我定义的一个module模式：&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;&lt;span style=&quot;color: Blue;&quot;&gt;snippet&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;module&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;/**&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; * ${5:Describe what this module does}&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; * @param {object} ${6:paramName}&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; */&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;classname&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(){&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;privateMethod1&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(){&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;,&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;privateMethod2&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(){&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;opt&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;publicObj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;options&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;,&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $&lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: $&lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.$&lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;,&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $&lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;: $&lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.$&lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;:,&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;extend&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;publicObj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;options&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;opt&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;publicObj&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;})()&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;修改过程中会看到$1,$2,$3自动更新成你键入的名字。&lt;/p&gt;
&lt;p&gt;我修改过的完整javascript.snippets：&lt;a href=&quot;http://code.google.com/p/yy-vimscript/source/browse/trunk/snippets/javascript.snippets&quot; target=&quot;_blank&quot;&gt;http://code.google.com/p/yy-vimscript/source/browse/trunk/snippets/javascript.snippets&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;实际上还有一个比较老牌的插件也致力于实现同样的snippet功能：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1318&quot; target=&quot;_blank&quot;&gt;snippetsEmu : An attempt to emulate TextMate&amp;#8217;s snippet expansion&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;但是它支持的模板语法比TextMate差很多，跟上面相同的prototype模板要通过这种形式定义：&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;let st = g:snip_start_tag&lt;/li&gt;
&lt;li&gt;let et = g:snip_end_tag&lt;/li&gt;
&lt;li&gt;let cd = g:snip_elem_delim&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;exec &amp;quot;Snippet proto &amp;quot;.st.&amp;quot;className&amp;quot;.et.&amp;quot;.prototype.&amp;quot;.st.&amp;quot;methodName&amp;quot;.et.&amp;quot; = function(&amp;quot;.st.et.&amp;quot;)&amp;lt;CR&amp;gt;{&amp;lt;CR&amp;gt;&amp;quot;.st.et.&amp;quot;&amp;lt;CR&amp;gt;};&amp;lt;CR&amp;gt;&amp;quot;.st.et&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;缩进容易出错，不支持用序号设定跳转顺序，安装过程也比snipMate繁复，所以被我毫不留恋的淘汰了……&lt;/p&gt;
&lt;p&gt;为了实现更广泛的智能补全，还需要一个必装插件：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1643&quot; target=&quot;_blank&quot;&gt;SuperTab continued. : Do all your insert-mode completion with Tab. &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;SuperTab让任意字符都可以通过tab补全，比较取巧的是，它会在缓冲区的上下文中寻找匹配的词来补全，因此不需要附带很庞大的API数据。&lt;br /&gt;
&lt;br/&gt;&lt;br /&gt;
=================步骤六的分割线===================&lt;br /&gt;
&lt;br/&gt;&lt;br /&gt;
下一步需要增强的是文件/项目管理，vim虽然自带一个FileExplorer（直接编辑一个目录时会调用它，比如:e .），还有上面提到过的wildmenu的强力辅助，但是与常见的GUI编辑器和IDE相比，仍然不太直观，因此以下插件值得一装：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1658&quot; target=&quot;_blank&quot;&gt;The NERD tree : A tree explorer plugin for navigating the filesystem&lt;/a&gt;&lt;br /&gt;
我最喜欢的文件导航工具，设置了快捷键,nt直接在侧面打开&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://vim.sourceforge.net/scripts/script.php?script_id=42&quot; target=&quot;_blank&quot;&gt;bufexplorer : Buffer Explorer / Browser &lt;/a&gt;&lt;br /&gt;
缓冲区导航&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=95&quot; target=&quot;_blank&quot;&gt;winmanager : A windows style IDE for Vim 6.0&lt;/a&gt;&lt;br /&gt;
把bufexploer和FileExplorer集成在左侧，类似IDE的效果，这个功能不足以让我放弃NERDTree……而且这个插件似乎很久没更新了，连支持Vim7的版本都没有，但是很多人喜欢，所以也推荐一下…… &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2607&quot; target=&quot;_blank&quot;&gt;TaskList.vim : Eclipse like task list&lt;/a&gt;&lt;br /&gt;
实现Eclipse的任务列表&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=69&quot; target=&quot;_blank&quot;&gt;project.tar.gz : Organize/Navigate projects of files&lt;/a&gt;&lt;br /&gt;
项目导航工具，不过没有Eclipse好用，需要写配置脚本，跟TextMate那种拖来拖去的drawer就更不能比了……&lt;br /&gt;
&lt;br/&gt;&lt;br /&gt;
=================步骤七的分割线===================&lt;br /&gt;
&lt;br/&gt;&lt;br /&gt;
最后推荐的插件都是开发工具：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=90&quot; target=&quot;_blank&quot;&gt;vcscommand.vim : CVS/SVN/SVK/git integration plugin&lt;/a&gt;&lt;br /&gt;
SVN/git管理工具，这个是必备罢。没有GUI菜单，不过快捷键也很方便，而且VimDiff是很棒的比较工具&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2578&quot; target=&quot;_blank&quot;&gt;javaScriptLint.vim : Displays JavaScript Lint warnings in the quickfix error window&lt;/a&gt;&lt;br /&gt;
看仔细啦～这个不是道格拉斯老爷子的JSLint，那个东西虽然强大（以前没觉得，最近在《代码之美》里看到道格拉斯老爷子描述了“递归下降分析”＋“运算符优先级技术”的动态语言解释器，才知道原来JSLint和JSON parser只是老爷子晒技术的承载体……），但是由于把规范约束在一个JS的安全子集上，适用面不广，设置起来也麻烦，在实际开发工作中未必实用。而&lt;a href=&quot;http://javascriptlint.com/&quot; target=&quot;_blank&quot;&gt;这个Lint&lt;/a&gt;就很中规中矩，当然也没自己折腾解释器啦，直接用了Mozilla的js引擎，安装也很方便，提供一个conf文件可以设置警告条件。这个vim插件装上后，保存js文件时都会自动校验代码并显示一个提示信息窗口。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=39&quot; target=&quot;_blank&quot;&gt;matchit : extended % matching for HTML, LaTeX, and many other languages&lt;/a&gt;&lt;br /&gt;
vim里的%命令可以在嵌套字符之间跳转（比如括号和引号，我在上面的.vimrc文件里增加了html的&lt;&gt;），这个插件将它的功能扩展到嵌套标签和语句&lt;/p&gt;
&lt;p&gt;To be &lt;a href=&quot;http://www.limboy.com/2009/06/07/vim-setting-more/&quot; target=&quot;_blank&quot;&gt;continue&lt;/a&gt;&amp;#8230;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/333038671/dexteryy/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dexteryy/~6072067/333038671/4180063/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/dexteryy/333038671/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/dexteryy/333038671/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;fsflare&quot;&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=9cca1100074df531ae98c62106639815&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=9cca1100074df531ae98c62106639815&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=5cdf89ba974a1e62f60501f7487ee434&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=5cdf89ba974a1e62f60501f7487ee434&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=8cf3ea03e5937dead088d1f0bdad1b38&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=8cf3ea03e5937dead088d1f0bdad1b38&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.limboy.com/2009/05/30/vim-setting/feed/</wfw:commentRss><description>vim是编辑器中的神器，但是因为学习曲线比较陡，界面也仿佛从石器时代穿越，广大fashion的前端工作者们难免对其有距离感。其实vim最大的萌点有两个，其一是百科全书般的文本编辑功能，其二是可以随意定制，满足任何与编辑器相关的需求和偏好，比如下面这张便是我在macbook pro上运行vim的截图，不仅语法高亮可以冒充TextMate，功能也几乎一致。

首先是做一个初始化配置脚本，在我的OSX10.5里是是~/.vimrc文件，这里只列出一些需要补充进去的设置：
&amp;#34;设置语法高亮的配色，在GUI界面里使用我自定义的yytextmate.vim
&lt;span class=&quot;readmore&quot;&gt;&lt;a href=&quot;http://www.limboy.com/2009/05/30/vim-setting/&quot; title=&quot;面向前端开发者和TextMate粉丝的vim配置&quot; target=&quot;_blank&quot;&gt;阅读全文——共6203字&lt;/a&gt;&lt;/span&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/333038671/dexteryy/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dexteryy/~6072067/333038671/4180063/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/dexteryy/333038671/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/dexteryy/333038671/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;fsflare&quot;&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=9cca1100074df531ae98c62106639815&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=9cca1100074df531ae98c62106639815&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=5cdf89ba974a1e62f60501f7487ee434&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=5cdf89ba974a1e62f60501f7487ee434&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=8cf3ea03e5937dead088d1f0bdad1b38&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=8cf3ea03e5937dead088d1f0bdad1b38&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/p&gt;</description><category>OpenSource</category><category>工具</category><category>代码</category><category>JavaScript</category><pubDate>Sat, 30 May 2009 22:21:23 +0800</pubDate><author>dexter_yy</author><comments>http://www.limboy.com/2009/05/30/vim-setting/#comments</comments><guid isPermaLink="false">http://www.limboy.com/2009/05/30/vim-setting/</guid><dc:creator>dexter_yy</dc:creator><fs:srclink>http://www.limboy.com/2009/05/30/vim-setting/</fs:srclink><fs:srcfeed>http://www.limboy.com/feed/rss2/</fs:srcfeed><fs:itemid>feedsky/dexteryy/~6072067/333038671/4180063</fs:itemid></item><item><title>土豆招聘Javascript工程师的JD，终于谷出来一个</title><link>http://item.feedsky.com/~feedsky/dexteryy/~6072067/333038672/4180063/1/item.html</link><content:encoded>&lt;p&gt;&lt;a href='http://www.limboy.com/wp-content/uploads/2009/05/rhino-a-5001.jpg' title='rhino-a-5001.jpg'&gt;&lt;img src='http://www.limboy.com/wp-content/uploads/2009/05/rhino-a-5001.jpg' alt='rhino-a-5001.jpg' style=&quot;width:250px;float:left;margin:0 10px 10px 0;&quot; /&gt;&lt;/a&gt;原本是&lt;a href=&quot;http://www.mikkolee.com/&quot; target=&quot;_blank&quot;&gt;小麦&lt;/a&gt;的文案，被我改的啰嗦了，虽然最近在地铁上读了&lt;a href=&quot;http://www.douban.com/subject/1433835/&quot;&gt;The Elements of Style&lt;/a&gt;，但是文字要写的简洁真的需要足够冷酷，我热血而且贪婪，不忍心漏掉一个信息点，所以简洁与我无缘……这篇JD发到其他地方的时候可能会删减很多，我先自己留一份……另外虽然这份JD仅仅提出了对雇员的要求，没有介绍雇主，但如果你仍然有兴趣，可以直接给我发email。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;职位：Javascript开发工程师&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;简单的说，我们需要的是能“正确”使用Javascript的开发者。不同情况下，“正确”的标准也不尽然相同，作为土豆的javascript工程师，我们希望你大致符合如下的描述：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;熟悉JS的语法特性和运行机制，比如词法作用域，闭包，原型链，无类型的OO，并乐于在此基础上钻研和探索用JS开发富客户端和复杂web应用的最佳实践和设计模式（&lt;em&gt;这句话用英文写还蛮好，中文怎么拆哑啊啊啊啊～&lt;/em&gt;）&lt;/li&gt;
&lt;li&gt;jQuery、YUI、MooTools等JS库，对你来说不仅只是开发工具，更是你学习代码风格、接口设计与程序架构的良师益友，你愿意了解他们，不盲目遵从，也不随意使唤。&lt;/li&gt;
&lt;li&gt;重视团队协作，愿意探寻和改进目前还不成熟的前端开发流程，了解各种常用工具，如Firebug，YSlow，JSLint，YUI compressor……&lt;/li&gt;
&lt;li&gt;在前端领域，你发布过一些有趣的个人项目，或是参与过开源项目，或是致力于构建自己的库和开发框架，或是作为团队核心成员开发过产品级的web应用。&lt;/li&gt;
&lt;li&gt;一些基本前端技能如CSS或PS切图就毋需赘述了。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;此外，我们乐见一些更优秀的特质：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;持续关注业界的新话题和新技术。你喜欢泡在javaeye，reddit之类技术社区灌水和答疑解惑，或者总是最早读到John Resig，Douglas Crackford，Dion Almae，PPK，Dean Edwards等大牛们的新作品和演讲ppt，或者长年维护自己的博客，分享自己的经验和新实践。&lt;/li&gt;
&lt;li&gt;你具备其他语言的开发经验，比如java和php，比如Actionscript3/Flex。这给你带来了更深入的程序设计经验和更高更全面的视角。&lt;/li&gt;
&lt;li&gt;对于浏览器中的各种可用资源、特性和差异，你都玩弄于鼓掌之间，你有大量优化和重构方面的经验，致力于编写安全，稳定，简洁而强壮，易于扩展的客户端代码。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上不是必需的，但如果你完全符合，我们可以考虑将土豆网总部迁至你家附近（哈哈）。&lt;/p&gt;
&lt;p&gt;最后，如果你目前还不符合以上的描述，但很渴望做到这些，我们也很愿意为你提供面谈的机会。&lt;/p&gt;
&lt;p&gt;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8211;最后吐槽的分割线&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;-&lt;/p&gt;
&lt;p&gt;我觉得小麦写的最后两句是经典哑，一个字未改～&lt;/p&gt;
&lt;p&gt;PS：题图其实是蜘蛛侠里的犀牛人……&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/333038672/dexteryy/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dexteryy/~6072067/333038672/4180063/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/dexteryy/333038672/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/dexteryy/333038672/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;fsflare&quot;&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=82c28add95627fd61be590e488f82d6e&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=82c28add95627fd61be590e488f82d6e&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=d94ec6ad50fc88e1135d2c136c4b3859&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=d94ec6ad50fc88e1135d2c136c4b3859&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=1d26bbc9ea273302d003c1150d8476a9&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=1d26bbc9ea273302d003c1150d8476a9&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.limboy.com/2009/05/16/yet-another-javascript-jd/feed/</wfw:commentRss><description>原本是小麦的文案，被我改的啰嗦了，虽然最近在地铁上读了The Elements of Style，但是文字要写的简洁真的需要足够冷酷，我热血而且贪婪，不忍心漏掉一个信息点，所以简洁与我无缘……这篇JD发到其他地方的时候可能会删减很多，我先自己留一份……另外虽然这份JD仅仅提出了对雇员的要求，没有介绍雇主，但如果你仍然有兴趣，可以直接给我发email。
职位：Javascript开发工程师
简单的说，我们需要的是能“正确”使用Javascript的开发者。不同情况下，“正确”的标准也不尽然相同，作为土豆的javascript工程师，我们希望你大致符合如下的描述：

&lt;span class=&quot;readmore&quot;&gt;&lt;a href=&quot;http://www.limboy.com/2009/05/16/yet-another-javascript-jd/&quot; title=&quot;土豆招聘Javascript工程师的JD，终于谷出来一个&quot; target=&quot;_blank&quot;&gt;阅读全文——共1128字&lt;/a&gt;&lt;/span&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/333038672/dexteryy/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dexteryy/~6072067/333038672/4180063/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/dexteryy/333038672/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/dexteryy/333038672/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;fsflare&quot;&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=82c28add95627fd61be590e488f82d6e&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=82c28add95627fd61be590e488f82d6e&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=d94ec6ad50fc88e1135d2c136c4b3859&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=d94ec6ad50fc88e1135d2c136c4b3859&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=1d26bbc9ea273302d003c1150d8476a9&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=1d26bbc9ea273302d003c1150d8476a9&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/p&gt;</description><category>代码</category><category>土豆网</category><category>JavaScript</category><pubDate>Sat, 16 May 2009 16:34:02 +0800</pubDate><author>dexter_yy</author><comments>http://www.limboy.com/2009/05/16/yet-another-javascript-jd/#comments</comments><guid isPermaLink="false">http://www.limboy.com/2009/05/16/yet-another-javascript-jd/</guid><dc:creator>dexter_yy</dc:creator><fs:srclink>http://www.limboy.com/2009/05/16/yet-another-javascript-jd/</fs:srclink><fs:srcfeed>http://www.limboy.com/feed/rss2/</fs:srcfeed><fs:itemid>feedsky/dexteryy/~6072067/333038672/4180063</fs:itemid></item><item><title>twitter like和传统论坛</title><link>http://item.feedsky.com/~feedsky/dexteryy/~6072067/333038673/4180063/1/item.html</link><content:encoded>&lt;p&gt;&lt;a href='http://www.limboy.com/wp-content/uploads/2009/05/picture-5.png' title='picture-5.png' &gt;&lt;img src='http://www.limboy.com/wp-content/uploads/2009/05/picture-5.png' alt='picture-5.png' style=&quot;width:250px;float:left;margin:0 10px 10px 0&quot;  /&gt;&lt;/a&gt;以前字符姐姐说我和&lt;a target=&quot;_blank&quot;  href=&quot;http://blog.sina.com.cn/five_fire&quot;&gt;绯雨叔叔&lt;/a&gt;都是彼得潘，另外我还以腹黑正太闻名，但是我也不得不承认，时间既是最难战胜的敌人也是最有价值的财富。如今面临的困扰，就是上网习惯变化很大，虽然firefox的书签工具栏上依然保留了很多论坛的链接（不常上的网站我都放到delicious里），但是别说跟人论战，就连踩遍各大论坛的时间也没有叻。我现在更习惯阅读feed（通过google reader和igoogle，后者类似报纸的体验）以及twitter模式的推送信息（通过桌面客户端和像friendfeed那样实时更新的网页）。&lt;/p&gt;
&lt;p&gt;但是支持这种阅读习惯的环境却不是很理想（对国内而言）——SNS/twitter里的信息价值不高，多数都是缺少上下文的唠叨和零碎的感悟，以及只有熟人会感兴趣的琐事和闲扯；个人博客的内容同质化严重，而且热度早已降温，更新频率普遍下降（我除外喔，我更新一直都这么少XD）。大量有价值的信息仍然深藏在论坛和社区网站（其中我最反感的形式是通过积分或虚拟货币的形式设定阅读权限，人为阻止信息传播和再利用），没有进入社会化网络。其实我大学时做的最深的地下城，也出于类似的考虑：很多有价值的信息隐藏在论坛这种“深层网络”（或者叫黯网络罢~）中，只被社区内部的核心成员所熟悉，虽然这样能把讨论维持在较高的质量，也能保证读者跟作者的直接联系，但是如果能借助更开放更易于接触的平台来传播，原本可以影响到更多人。&lt;/p&gt;
&lt;p&gt;&lt;a href='http://www.limboy.com/wp-content/uploads/2009/05/picture-3.png' title='picture-3.png'&gt;&lt;img src='http://www.limboy.com/wp-content/uploads/2009/05/picture-3.png' alt='picture-3.png' style=&quot;width:400px;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;strong&gt;插图：&lt;/strong&gt;&lt;em&gt;这张图是我的书签工具栏，除了这个地方，书签的其他位置不放东西，也就是让真正的常用网站都位于随手可点的位置，不常用的网站扔到另一个管理体系里&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;不过幸好技术的普及速度永远比用户习惯的迁移要快，现在很多论坛都开始提供feed了（感谢Discuz!），借助&lt;a target=&quot;_blank&quot; href=&quot;https://friendfeed.com/dexteryy&quot;&gt;friendfeed&lt;/a&gt;就可以很好的转换成推送信息。&lt;/p&gt;
&lt;p&gt;也就是在friendfeed里建一个group，把feed用custom rss/atom或blog的形式导入进去，并且勾选“Include entry description as a comment”，也就是把rss里的描述节点转换成friendfeed里的评论（毕竟仅凭一个标题链接，很难决定是否深入阅读）。然后设置deliver为IM方式，便可以通过gtalk接收信息了，感觉跟IRC或群差不多~&lt;/p&gt;
&lt;p&gt;缺点是导入的评论全都会算到自己头上……&lt;/p&gt;
&lt;p&gt;另外由于论坛feed通常只包含新主题，如果是像过去的NT那样，大家都愿意在十几页的回帖里长篇大论的拍砖并且跑题现象严重的论坛，就很难track到有价值的内容，不过对于那样的论坛，直接参与才是更好的阅读方式罢&lt;/p&gt;
&lt;p&gt;这个是我刚刚弄的一个聚合，收集web前端技术的资讯和资源：&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://friendfeed.com/frontend-feed-cn&quot;&gt;&lt;img src=&quot;http://i.friendfeed.com/p-8575630059de44aeb0762dfce50426e7-large-1&quot; style=&quot;margin:0 10px 0 0;border:0;&quot; /&gt;&lt;/a&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://friendfeed.com/frontend-feed-cn&quot;&gt;https://friendfeed.com/frontend-feed-cn&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这个效果也很不错，track国内的SF/F社区：&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://friendfeed.com/fantasycn&quot;&gt;&lt;img src=&quot;http://i.friendfeed.com/p-8dacd5026ef848338eefe0abaf892cb5-large-1&quot; style=&quot;margin:0 10px 0 0;border:0;&quot; /&gt;&lt;/a&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://friendfeed.com/fantasycn&quot;&gt;https://friendfeed.com/fantasycn&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;但是接下来的计划就麻烦了…动漫方面，&lt;a target=&quot;_blank&quot; href=&quot;http://bbs.popgo.net/bbs/&quot;&gt;破狗&lt;/a&gt;，&lt;a target=&quot;_blank&quot; href=&quot;http://www.cloudc.net/cgi-bin/bbs/index.cgi&quot;&gt;云中&lt;/a&gt;之类的论坛都没feed（用VBB不是错，但是要升级到新版哑！）&lt;/p&gt;
&lt;p&gt;还想搞一个pc game的，但是&lt;a target=&quot;_blank&quot;  href=&quot;http://www.eastgame.net/&quot;&gt;TLF&lt;/a&gt;，&lt;a target=&quot;_blank&quot;  href=&quot;http://bbs.ngacn.cc/&quot;&gt;NGA&lt;/a&gt;之类的站帖子太多……&lt;a  target=&quot;_blank&quot; href=&quot;http://zhihuiguan.com/bbs/&quot;&gt;指挥官&lt;/a&gt;，&lt;a  target=&quot;_blank&quot; href=&quot;http://tbsgame.net/bbs/&quot;&gt;铁资网&lt;/a&gt;之类的论坛也是没feed……让我感觉有折腾这个的工夫，还不如去打demigod……&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://twitter.com/lemonkiller/status/1808532539&quot;&gt;柠檬基拉&lt;/a&gt;老爷提醒说有很多网页转rss的工具，这个我以前确实见过很多但都没怎么体验过，想来也不太靠谱………其实我觉得，一个真正的强者，在这种情况下就应该挺身而出，开发出一个兼具抓取，聚合，呈现，通知等功能的web应用，来满足自己的需求……当然由于我最近很懒，这个idea由我来实现的可能性小于10%罢……&lt;/p&gt;
&lt;p&gt;我还是希望有更多社区网站都能以开放的心态，把自己的内容用更友善更易于传播的形式输出，开放永远是互联网的根基，而后web2.0时代的互联网应该是有机的整体，内容在一个站点产出后，可以通过“云”的加工变得更易于查找，更易于阅读，更易于传播，而互联网用户则能接触到更广阔更个性化的信息。&lt;/p&gt;
&lt;p&gt;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8211;肆无忌惮跑题的分割线&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8211;&lt;/p&gt;
&lt;p&gt;PS：题图是我最近在追的新番《东之伊甸》，要素是：近未来，游戏规则，社会弊端，写实的科技应用（围绕手机），对西方电影的引用，整体风格非常像攻壳SAC，可惜……好像只会有11话，单季都不够哑！神山健治老师请多做一些类攻壳的作品罢！&lt;/p&gt;
&lt;p&gt;另外最近还在追《苍天航路》，要素是气势！无论人物，动作，姿态，对话，打斗场面，都燃的像港漫，我觉得多看这个一定能改善我最近多愁善感的非主流形象，成为无所畏惧的强者挖哈哈哈哈哈哈～&lt;/p&gt;
&lt;p&gt;&lt;a href='http://www.limboy.com/wp-content/uploads/2009/05/picture-7.png' title='picture-7.png'&gt;&lt;img src='http://www.limboy.com/wp-content/uploads/2009/05/picture-7.png' alt='picture-7.png' style=&quot;width:400px;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/333038673/dexteryy/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dexteryy/~6072067/333038673/4180063/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/dexteryy/333038673/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/dexteryy/333038673/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;fsflare&quot;&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=a004405cf664b8a9a596fedb173ca350&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=a004405cf664b8a9a596fedb173ca350&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=fff4a051982a5311d92b2dba4a505dbc&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=fff4a051982a5311d92b2dba4a505dbc&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=eb727f929a7c8c87290d0776def1eeaa&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=eb727f929a7c8c87290d0776def1eeaa&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.limboy.com/2009/05/16/forum2twitter/feed/</wfw:commentRss><description>以前字符姐姐说我和绯雨叔叔都是彼得潘，另外我还以腹黑正太闻名，但是我也不得不承认，时间既是最难战胜的敌人也是最有价值的财富。如今面临的困扰，就是上网习惯变化很大，虽然firefox的书签工具栏上依然保留了很多论坛的链接（不常上的网站我都放到delicious里），但是别说跟人论战，就连踩遍各大论坛的时间也没有叻。我现在更习惯阅读feed（通过google reader和igoogle，后者类似报纸的体验）以及twitter模式的推送信息（通过桌面客户端和像friendfeed那样实时更新的网页）。
但是支持这种阅读习惯的环境却不是很理想（对国内而言）——SNS/twitter里的信息价值不高，多数都是缺少上下文的唠叨和零碎的感悟，以及只有熟人会感兴趣的琐事和闲扯；个人博客的内容同质化严重，而且热度早已降温，更新频率普遍下降（我除外喔，我更新一直都这么少XD）。大量有价值的信息仍然深藏在论坛和社区网站（其中我最反感的形式是通过积分或虚拟货币的形式设定阅读权限，人为阻止信息传播和再利用），没有进入社会化网络。其实我大学时做的最深的地下城，也出于类似的考虑：很多有价值的信息隐藏在论坛这种“深层网络”（或者叫黯网络罢~）中，只被社区内部的核心成员所熟悉，虽然这样能把讨论维持在较高的质量，也能保证读者跟作者的直接联系，但是如果能借助更开放更易于接触的平台来传播，原本可以影响到更多人。
&lt;span class=&quot;readmore&quot;&gt;&lt;a href=&quot;http://www.limboy.com/2009/05/16/forum2twitter/&quot; title=&quot;twitter like和传统论坛&quot; target=&quot;_blank&quot;&gt;阅读全文——共1876字&lt;/a&gt;&lt;/span&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/333038673/dexteryy/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dexteryy/~6072067/333038673/4180063/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/dexteryy/333038673/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/dexteryy/333038673/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;fsflare&quot;&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=a004405cf664b8a9a596fedb173ca350&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=a004405cf664b8a9a596fedb173ca350&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=fff4a051982a5311d92b2dba4a505dbc&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=fff4a051982a5311d92b2dba4a505dbc&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/dexteryy?a=eb727f929a7c8c87290d0776def1eeaa&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/dexteryy?i=eb727f929a7c8c87290d0776def1eeaa&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/p&gt;</description><category>网络</category><category>工具</category><category>Web2.0</category><category>日漫</category><category>web服务/应用</category><pubDate>Sat, 16 May 2009 15:20:11 +0800</pubDate><author>dexter_yy</author><comments>http://www.limboy.com/2009/05/16/forum2twitter/#comments</comments><guid isPermaLink="false">http://www.limboy.com/2009/05/16/forum2twitter/</guid><dc:creator>dexter_yy</dc:creator><fs:srclink>http://www.limboy.com/2009/05/16/forum2twitter/</fs:srclink><fs:srcfeed>http://www.limboy.com/feed/rss2/</fs:srcfeed><fs:itemid>feedsky/dexteryy/~6072067/333038673/4180063</fs:itemid></item></channel></rss>