<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feeds.feedsky.com/styles/temp01.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:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feeds.feedsky.com/csdn.net/cat_hsfz" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feeds.feedsky.com/csdn.net/cat_hsfz" type="application/rss+xml"></fs:self_link><lastBuildDate>Tue, 17 Nov 2009 16:07:00 GMT</lastBuildDate><title>Cat's Collection</title><description>CSDN博客聚合服务</description><link>http://blog.csdn.net/blogrss.aspx?username=cat_hsfz</link><item><title>User Friendly 2009</title><link>http://blog.csdn.net/cat_hsfz/archive/2009/11/18/4824786.aspx</link><description>&lt;br /&gt;这个周末有幸去上海参加了UPA China组织的用户体验行业大会User Friendly 2009。参会人员大多数都是设计师，会议内容也是他们熟悉的内容，但对于像我这样少数的参会工程师来说，这样的会议确实让人大开眼界。&lt;br /&gt;在整场会议当中，我觉得让我印象最深刻的就是Jared M. Spool的Keynote了，我觉得其中一些观点是非常有价值的。至于其它的Workshop，也都能学到一些实实在在的东西，不过就没有Keynote那么震撼了。下面就分享一些我印象最深刻的内容：从ROI到ROX&lt;br /&gt;Jared M. Spool的Keynote标题为The Dawning of the Age of Experience（体验时代的来临）。这跟我们传统所说的产品设计有什么不同？那就是我们需要把视觉从产品放大到体验上来。在这里，我想借用MIX 09上Bill Buxton的Keynote中的几页幻灯片来解释一下：&lt;br /&gt;&lt;br /&gt;Bill Buxton有一辆这个型号的自行车，而且这也正是Roland Green获得公路赛冠军所用的自行车型号。画面上给你传达的是这辆&lt;img src=&quot;http://www1.feedsky.com/t1/299707599/cat_hsfz/csdn.net/s.gif?r=http://blog.csdn.net/cat_hsfz/archive/2009/11/18/4824786.aspx&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/csdn.net/cat_hsfz/299707599/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/csdn.net/cat_hsfz/299707599/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Wed, 18 Nov 2009 00:07:00 +0800</pubDate><author>Cat Chen</author><guid isPermaLink="false">http://blog.csdn.net/cat_hsfz/archive/2009/11/18/4824786.aspx</guid><dc:creator>Cat Chen</dc:creator><fs:srclink>http://blog.csdn.net/cat_hsfz/archive/2009/11/18/4824786.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/cat_hsfz/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/cat_hsfz/~1064952/299707599/1064952</fs:itemid></item><item><title>Tech&amp;#183;Ed 2009</title><link>http://blog.csdn.net/cat_hsfz/archive/2009/11/16/4818901.aspx</link><description>今年是我第一次以讲师身份参加TechEd，碰巧TechEd所在的周末我们要搬家到百度大厦，所以我星期四早上搞掂打包工作后就赶到了会场。凭着《讲师指南》进入会场后，我直奔讲师休息室领取证件和衣服，然后再跑到MVP站台领取印章，接着等待第一天下午的Keynote开始。尽管我没有参加Windows 7 Launch而跑去参加SD2C了，但我仍然觉得第一天Keynote的一半是Windows 7 Launch的重播。至于Keynote的另外一半，则是与Windows 7并列于New Efficiency系列的Windows Server 2008 R2以及Exchange Server 2010。我认为比较有趣的是Exchange Server 2010的演示，这个演示通过丢失笔记本电脑的场景来说明虚拟桌面的强大——换一台电脑，同一个桌面；这个演示还通过丢失手机的场景来说明远程擦除手机数据的特性。没错，这些功能都很好，但我个人的观点是——如果你经常丢失手机和电脑，Exchange Server 2010的价值才会被凸显出来。最后，我觉得Exchange Server 2&lt;img src=&quot;http://www1.feedsky.com/t1/299707600/cat_hsfz/csdn.net/s.gif?r=http://blog.csdn.net/cat_hsfz/archive/2009/11/16/4818901.aspx&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/csdn.net/cat_hsfz/299707600/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/csdn.net/cat_hsfz/299707600/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Mon, 16 Nov 2009 20:06:00 +0800</pubDate><author>Cat Chen</author><guid isPermaLink="false">http://blog.csdn.net/cat_hsfz/archive/2009/11/16/4818901.aspx</guid><dc:creator>Cat Chen</dc:creator><fs:srclink>http://blog.csdn.net/cat_hsfz/archive/2009/11/16/4818901.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/cat_hsfz/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/cat_hsfz/~1064952/299707600/1064952</fs:itemid></item><item><title>我在 TechEd 2009 演讲的资源 (Silverlight &amp;amp; Ajax)</title><link>http://blog.csdn.net/cat_hsfz/archive/2009/11/10/4796125.aspx</link><description>&lt;br /&gt;这是TechEd第二天下午的Silverlight课程资源。关于百度Hi的Silverlight实现方面的任何问题，都欢迎与我讨论。基于Silverlight的RIA架构及百度应用View more presentations from Cat Chen.&lt;br /&gt;这是TechEd第三天下午ASP.NET 4课程资源。与ASP.NET AJAX 4.0相关的问题可以在此讨论。建站大业，实战ASP.NET 4View more presentations from Cat Chen.&lt;img src=&quot;http://www1.feedsky.com/t1/299707601/cat_hsfz/csdn.net/s.gif?r=http://blog.csdn.net/cat_hsfz/archive/2009/11/10/4796125.aspx&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/csdn.net/cat_hsfz/299707601/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/csdn.net/cat_hsfz/299707601/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 10 Nov 2009 11:09:00 +0800</pubDate><author>Cat Chen</author><guid isPermaLink="false">http://blog.csdn.net/cat_hsfz/archive/2009/11/10/4796125.aspx</guid><dc:creator>Cat Chen</dc:creator><fs:srclink>http://blog.csdn.net/cat_hsfz/archive/2009/11/10/4796125.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/cat_hsfz/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/cat_hsfz/~1064952/299707601/1064952</fs:itemid></item><item><title>SD2C 2009 (Part 2 - Session &amp;amp; Forum)</title><link>http://blog.csdn.net/cat_hsfz/archive/2009/10/25/4727311.aspx</link><description>&lt;br /&gt;SD2C的第一天晚上，我在「开放平台」和「PPT制作秘诀」两者之间犹豫，最后选择了去听蔡学镛的「尼古丁+咖啡因...不瞌睡的PPT制作秘诀」，原因是我觉得如果蔡学镛能教别人写不瞌睡PPT，那么他自己的PPT至少也应该是不瞌睡的。事后证明我的选择是没错的——别人告诉我「开放平台」论坛成了平台和开发人员互相责骂对方的战场。&lt;br /&gt;蔡学镛把制作PPT比喻为制作生鱼片，要经过选材、处理、装饰这三步。在选材方面，一个PPT讲的内容最好是相当于一章书的内容，时间不能超过90分钟，而讲述的事情不能超过7件。接下来的处理，要注意做好破题，引起受众的兴趣，并且每一小节的结束时都要有总结。一页PPT所表达的意思，有可能相当于一个词、一句话、一段话，我们应该多用表达一句话的PPT页面。最后的装饰会需要用到不少图片，通过使用正确的关键字联想策略，往往都能搜索到你想要的图片。&lt;br /&gt;SD2C的第二天，我原计划要听听周爱民的「实践者思想」和蔡学镛的「DSL设计与实践」的，结果上午听完Gary Bennett的「iPhone SDK简介」之后就被吸引住了，下午的时间都放在iPhone相关课程上了&lt;img src=&quot;http://www1.feedsky.com/t1/299707602/cat_hsfz/csdn.net/s.gif?r=http://blog.csdn.net/cat_hsfz/archive/2009/10/25/4727311.aspx&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/csdn.net/cat_hsfz/299707602/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/csdn.net/cat_hsfz/299707602/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Sun, 25 Oct 2009 19:10:00 +0800</pubDate><author>Cat Chen</author><guid isPermaLink="false">http://blog.csdn.net/cat_hsfz/archive/2009/10/25/4727311.aspx</guid><dc:creator>Cat Chen</dc:creator><fs:srclink>http://blog.csdn.net/cat_hsfz/archive/2009/10/25/4727311.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/cat_hsfz/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/cat_hsfz/~1064952/299707602/1064952</fs:itemid></item><item><title>SD2C 2009 (Part 1 - Keynote &amp;amp; Meal)</title><link>http://blog.csdn.net/cat_hsfz/archive/2009/10/23/4721514.aspx</link><description>&lt;br /&gt;一年一度的SD2C又来了，今年的时间由去年的两天半扩充到三天，第一天只设主会场，全部都是keynote。&lt;br /&gt;跟去年的情况类似的是，keynote环节基本上就是赞助商专场，每个赞助商都来从技术的角度说一下自己当前最重视的市场。例如说Microsoft开始重视Team Foundation Server的市场占有率了，于是就在Visual Studio 2010的keynote上介绍TFS的特性，所占比例比VS2010自身还要多。当然，keynote里面也有一些是有启发性的，例如IBM讲的大型企业中的敏捷实践，这就属于我认为比较好的keynote。&lt;br /&gt;由于今年的话题集中在云和移动上面，所以keynote大多与这两个领域相关。能够上去讲keynote的人，当然是要有一定水平的，不能讲一些很肤浅的内容，但如果因此就把keynote弄得很高深或者很抽象又弄巧成拙了。高深的内容固然能够表现出演讲者很有水平，问题是这样一个面向上千受众的活动，有多少人能够对如此多个keynote的话题都有深入了解呢？就算你对其中一个话题很有了解，觉得讲得如此有高度很对你胃口，但你也总有n个&lt;img src=&quot;http://www1.feedsky.com/t1/299707603/cat_hsfz/csdn.net/s.gif?r=http://blog.csdn.net/cat_hsfz/archive/2009/10/23/4721514.aspx&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/csdn.net/cat_hsfz/299707603/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/csdn.net/cat_hsfz/299707603/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Fri, 23 Oct 2009 00:08:00 +0800</pubDate><author>Cat Chen</author><guid isPermaLink="false">http://blog.csdn.net/cat_hsfz/archive/2009/10/23/4721514.aspx</guid><dc:creator>Cat Chen</dc:creator><fs:srclink>http://blog.csdn.net/cat_hsfz/archive/2009/10/23/4721514.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/cat_hsfz/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/cat_hsfz/~1064952/299707603/1064952</fs:itemid></item><item><title>十分钟内学会：控制浏览器是否缓存网页状态</title><link>http://blog.csdn.net/cat_hsfz/archive/2009/10/09/4680304.aspx</link><description>Question&lt;br /&gt;在Firefox等浏览器中，如果你打开一个页面并进行若干操作，例如在文本框进行输入，甚至点击按钮进行Ajax操作更新页面局部，这些操作的结果都会被缓存下来。在你点击链接离开这个页面后，如果你通过后退按钮回到这个页面，你会发现它仍出于你离开时的状态，而非页面刚刚加载好后的初始状态。在一些情况下，这样的缓存方式是符合我们预期的；但在另外一些情况下，我们更希望页面恢复到初始状态，或者说让页面从零开始重新加载一边。我们如何才能让浏览器尊重我们的选择呢？&lt;br /&gt;Answer&lt;br /&gt;如果你只是希望页面不缓存加载后的变更，后退就恢复到最初加载的状态，你只需要一个空白的unload事件就可以了：window.onunload = function(){};&lt;br /&gt;其中的原理是，Firefox等浏览器会尝试通过“挂起（suspend）”的方式来缓存页面，使得后退能够恢复到页面之前被挂起那一刻的状态。然而如果unload事件有处理函数，浏览器就认为你可能已经对页面进行了析构处理，这时候页面已经不可能回到正常的交互状态，也就不能以挂起的方式来缓存页面。&lt;br /&gt;如果&lt;img src=&quot;http://www1.feedsky.com/t1/299707604/cat_hsfz/csdn.net/s.gif?r=http://blog.csdn.net/cat_hsfz/archive/2009/10/09/4680304.aspx&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/csdn.net/cat_hsfz/299707604/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/csdn.net/cat_hsfz/299707604/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Fri, 09 Oct 2009 14:36:00 +0800</pubDate><author>Cat Chen</author><guid isPermaLink="false">http://blog.csdn.net/cat_hsfz/archive/2009/10/09/4680304.aspx</guid><dc:creator>Cat Chen</dc:creator><fs:srclink>http://blog.csdn.net/cat_hsfz/archive/2009/10/09/4680304.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/cat_hsfz/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/cat_hsfz/~1064952/299707604/1064952</fs:itemid></item><item><title>你的网站「被兼容」了吗？</title><link>http://blog.csdn.net/cat_hsfz/archive/2009/09/17/4610575.aspx</link><description>&lt;br /&gt;一般情况下，我们只会讨论我们的网站如何主动兼容某某浏览器，被动地等待浏览器来兼容我们的网站是不切实际的幻想——哪个浏览器会那么伟大，原意主动为一个不兼容的网站而作出改变呢？IE8就是这样一个伟大的浏览器，Microsoft就是一家这样伟大的企业。&lt;br /&gt;故事是这样的，我们有一小段JavaScript依赖于userAgent属性，同样是用IE8进行浏览，在测试环境上userAgent显示为MSIE 7.0，而在生产环境上userAgent显示为MSIE 8.0。为什么会这样呢？打开Developer Toolbar后，发现原来是Browser Mode这个开关在搞鬼——当Browser Mode是Internet Explorer 8的时候，userAgent就是MSIE 8.0；当Browser Mode是Internet Explorer 8 Compatibility View（兼容性视图）或Internet Explorer 7的时候，userAgent就是MSIE 7.0了。&lt;br /&gt;接下来的问题是，我们并没有刻意去拨动这个开关啊，两个相同的页面怎么在不同的环&lt;img src=&quot;http://www1.feedsky.com/t1/299707605/cat_hsfz/csdn.net/s.gif?r=http://blog.csdn.net/cat_hsfz/archive/2009/09/17/4610575.aspx&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/csdn.net/cat_hsfz/299707605/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/csdn.net/cat_hsfz/299707605/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Thu, 17 Sep 2009 15:41:00 +0800</pubDate><author>Cat Chen</author><guid isPermaLink="false">http://blog.csdn.net/cat_hsfz/archive/2009/09/17/4610575.aspx</guid><dc:creator>Cat Chen</dc:creator><fs:srclink>http://blog.csdn.net/cat_hsfz/archive/2009/09/17/4610575.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/cat_hsfz/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/cat_hsfz/~1064952/299707605/1064952</fs:itemid></item><item><title>jQuery is DSL (Part 2 - jQuery)</title><link>http://blog.csdn.net/cat_hsfz/archive/2009/08/17/4610576.aspx</link><description>jQuery的Internal DSL形式&lt;br /&gt;在上一篇文章里面，我们了解到了Internal DSL的具体形式，形如：&lt;br /&gt;/* Method Chaining */&lt;br /&gt;
computer()&lt;br /&gt;
  .processor()&lt;br /&gt;
    .cores(2)&lt;br /&gt;
    .i386()&lt;br /&gt;
  .disk()&lt;br /&gt;
    .size(150)&lt;br /&gt;
  .disk()&lt;br /&gt;
    .size(75)&lt;br /&gt;
    .speed(7200)&lt;br /&gt;
    .sata()&lt;br /&gt;
  .end();&lt;br /&gt;然后我们在看看一段典型的jQuery代码：&lt;br /&gt;$(&quot;ul#contacts li.item&quot;)&lt;br /&gt;
  .find(&quot;span.name&quot;)&lt;br /&gt;
    .click(function(e) { $(e.target).siblings(&quot;.more&quot;).toggle(); })&lt;br /&gt;
    .end()&lt;br /&gt;
  .find&lt;img src=&quot;http://www1.feedsky.com/t1/299707606/cat_hsfz/csdn.net/s.gif?r=http://blog.csdn.net/cat_hsfz/archive/2009/08/17/4610576.aspx&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/csdn.net/cat_hsfz/299707606/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/csdn.net/cat_hsfz/299707606/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Mon, 17 Aug 2009 00:41:00 +0800</pubDate><author>Cat Chen</author><guid isPermaLink="false">http://blog.csdn.net/cat_hsfz/archive/2009/08/17/4610576.aspx</guid><dc:creator>Cat Chen</dc:creator><fs:srclink>http://blog.csdn.net/cat_hsfz/archive/2009/08/17/4610576.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/cat_hsfz/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/cat_hsfz/~1064952/299707606/1064952</fs:itemid></item><item><title>jQuery is DSL (Part 1 - DSL)</title><link>http://blog.csdn.net/cat_hsfz/archive/2009/08/10/4610577.aspx</link><description>&lt;br /&gt;jQuery刚刚出来的时候，我没有太多关注它，觉得这不过是Yet Another JavaScript Library。早期的jQuery专注于DOM节点的筛选与操作，不提供众多的基础类扩展，更不提供UI组件，因此体积能够做到很小。然而，我实在看不出它和我熟悉的Prototype比有什么明显的优势——jQuery能做的各项独立的操作，Prototype都能做。&lt;br /&gt;后来用jQuery的人越来越多，并且大家都爱用它的链式方法调用，甚至还把这种写法推广到其它语言中去。例如ASP.NET MVP Omar AL Zabir就把他的服务器端C#组件设计为支持链式方法调用的。这时候我才开始关注jQuery，并且逐渐喜欢上了链式方法调用的写法，也在我自己的JavaScript组件中实现类似的API（参考Async和Overload）。最后，我突然明白到，这其实就是一种Internal DSL嘛！&lt;br /&gt;在这篇文章里，我准备先讨论Internal DSL，在下一篇文章里面再解释为什么jQuery是Internal DSL。现在我们就从最根本的问题开始吧——什么是Internal&lt;img src=&quot;http://www1.feedsky.com/t1/299707607/cat_hsfz/csdn.net/s.gif?r=http://blog.csdn.net/cat_hsfz/archive/2009/08/10/4610577.aspx&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/csdn.net/cat_hsfz/299707607/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/csdn.net/cat_hsfz/299707607/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Mon, 10 Aug 2009 23:41:00 +0800</pubDate><author>Cat Chen</author><guid isPermaLink="false">http://blog.csdn.net/cat_hsfz/archive/2009/08/10/4610577.aspx</guid><dc:creator>Cat Chen</dc:creator><fs:srclink>http://blog.csdn.net/cat_hsfz/archive/2009/08/10/4610577.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/cat_hsfz/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/cat_hsfz/~1064952/299707607/1064952</fs:itemid></item><item><title>让 JavaScript 轻松支持函数重载 (Part 2 - 实现)</title><link>http://blog.csdn.net/cat_hsfz/archive/2009/07/02/4610579.aspx</link><description>&lt;br /&gt;在上一篇文章里，我们设计了一套能在JavaScript中描述函数重载的方法，这套方法依赖于一个叫做Overload的静态类，现在我们就来看看如何实现这个静态类。识别文本签名&lt;br /&gt;我们先来回顾一下上一篇文章中提到的Overload用例：&lt;br /&gt; var extend = Overload&lt;br /&gt;  .add(&quot;*, ...&quot;,&lt;br /&gt;    function(target) { })&lt;br /&gt;  .add(&quot;Boolean, *, ...&quot;,&lt;br /&gt;    function(deep, target) { });&lt;br /&gt;我们允许用户输入一个字符串，表示某一个重载的签名。在用户调用函数时，我们需要拿着用户输入的参数实例去跟签名上的每一个参数类型作比较，因此我们需要先把这个字符串转换为类型数组。也就是说，字符串&quot;Boolean, Number, Array&quot;应该转换为数组[Boolean, Number, Array]。&lt;br /&gt;在进行转换之前，我们先要考虑处理两个特殊类型，就是代表任意类型的&quot;*&quot;，和代表任意数量的&quot;...&quot;。我们可以为它们定义两个&lt;img src=&quot;http://www1.feedsky.com/t1/299707608/cat_hsfz/csdn.net/s.gif?r=http://blog.csdn.net/cat_hsfz/archive/2009/07/02/4610579.aspx&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/csdn.net/cat_hsfz/299707608/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/csdn.net/cat_hsfz/299707608/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Thu, 02 Jul 2009 15:41:00 +0800</pubDate><author>Cat Chen</author><guid isPermaLink="false">http://blog.csdn.net/cat_hsfz/archive/2009/07/02/4610579.aspx</guid><dc:creator>Cat Chen</dc:creator><fs:srclink>http://blog.csdn.net/cat_hsfz/archive/2009/07/02/4610579.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/cat_hsfz/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/cat_hsfz/~1064952/299707608/1064952</fs:itemid></item></channel></rss>
