<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Cheney Jin</title>
	<atom:link href="http://zicjin.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://zicjin.wordpress.com</link>
	<description>Reading makes a full man,conference makes a ready man,and writing makes an exact man</description>
	<lastBuildDate>Mon, 10 Oct 2011 02:32:17 +0000</lastBuildDate>
	<language>zh-cn</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='zicjin.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Cheney Jin</title>
		<link>http://zicjin.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://zicjin.wordpress.com/osd.xml" title="Cheney Jin" />
	<atom:link rel='hub' href='http://zicjin.wordpress.com/?pushpress=hub'/>
		<item>
		<title>近况</title>
		<link>http://zicjin.wordpress.com/2011/10/10/%e8%bf%91%e5%86%b5/</link>
		<comments>http://zicjin.wordpress.com/2011/10/10/%e8%bf%91%e5%86%b5/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 02:31:04 +0000</pubDate>
		<dc:creator>Cheney Jin</dc:creator>
				<category><![CDATA[Analysis]]></category>
		<category><![CDATA[Develop]]></category>
		<category><![CDATA[Product]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://zicjin.wordpress.com/?p=640883</guid>
		<description><![CDATA[公司的任务结束了一个阶段，有些空余时间了。 最近答应一朋友用业余时间做一个VC和创业者之间的撮合平台，设计和产品定位有别人负责，我只负责实现。虽然我觉得像angelcrunch.com这个的项目已经做的足够到位并且被人家先入为主了，但鉴于实现成本不高，还是答应把它做出来。 当时考虑到今后项目维护的便捷性，决定使用php，所以这两天又拿出php手册翻，边翻边用codeigniter实现项目的基础功能。在这个过程中我再一次深刻体会到php是多么让人说不出的难受。从4到5.1，5.2，5.3每个版本都有些说大不大说小不小的“改进”，用好听的话讲是每天都在向“面向对象”靠拢。这个纠结的过程外行人还以为是好事情，php进步了？实则……额。建议参考一下python3k的做法，该放手的不放，不会成为什么浪漫的“剪不断理还乱”，只会成为一陀大便而已。 自己这些年也算玩了好几个语言，本来自认为对这些问题已看开了，很多自己不喜欢的但拥有强大市场影响力的语言如java，php我都能够接受。但可能年纪越大，时间越宝贵，也可能是有了一定资本做做选择题。所以最近对自己不认可的语言越来越排斥了。我得这不是坏事，说明我正在越来越接近追求自己内心真正想要的东西。 Filed under: Analysis, Develop, Product, Web<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zicjin.wordpress.com&amp;blog=2119805&amp;post=640883&amp;subd=zicjin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>公司的任务结束了一个阶段，有些空余时间了。</p>
<p>最近答应一朋友用业余时间做一个VC和创业者之间的撮合平台，设计和产品定位有别人负责，我只负责实现。虽然我觉得像<a href="http://www.angelcrunch.com/">angelcrunch.com</a>这个的项目已经做的足够到位并且被人家先入为主了，但鉴于实现成本不高，还是答应把它做出来。<br /> 当时考虑到今后项目维护的便捷性，决定使用php，所以这两天又拿出php手册翻，边翻边用codeigniter实现项目的基础功能。在这个过程中我再一次深刻体会到php是多么让人说不出的难受。从4到5.1，5.2，5.3每个版本都有些说大不大说小不小的“改进”，用好听的话讲是每天都在向“面向对象”靠拢。这个纠结的过程外行人还以为是好事情，php进步了？实则……额。建议参考一下python3k的做法，该放手的不放，不会成为什么浪漫的“剪不断理还乱”，只会成为一陀大便而已。</p>
<p>自己这些年也算玩了好几个语言，本来自认为对这些问题已看开了，很多自己不喜欢的但拥有强大市场影响力的语言如java，php我都能够接受。但可能年纪越大，时间越宝贵，也可能是有了一定资本做做选择题。所以最近对自己不认可的语言越来越排斥了。我得这不是坏事，说明我正在越来越接近追求自己内心真正想要的东西。</p>
<br />Filed under: <a href='http://zicjin.wordpress.com/category/analysis/'>Analysis</a>, <a href='http://zicjin.wordpress.com/category/develop/'>Develop</a>, <a href='http://zicjin.wordpress.com/category/product/'>Product</a>, <a href='http://zicjin.wordpress.com/category/develop/web/'>Web</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zicjin.wordpress.com/640883/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zicjin.wordpress.com/640883/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zicjin.wordpress.com/640883/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zicjin.wordpress.com/640883/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/zicjin.wordpress.com/640883/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/zicjin.wordpress.com/640883/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/zicjin.wordpress.com/640883/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/zicjin.wordpress.com/640883/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zicjin.wordpress.com/640883/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zicjin.wordpress.com/640883/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zicjin.wordpress.com/640883/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zicjin.wordpress.com/640883/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zicjin.wordpress.com/640883/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zicjin.wordpress.com/640883/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zicjin.wordpress.com&amp;blog=2119805&amp;post=640883&amp;subd=zicjin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zicjin.wordpress.com/2011/10/10/%e8%bf%91%e5%86%b5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fcb409c2a093880a048e41e8521cfa88?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">zicjin</media:title>
		</media:content>
	</item>
		<item>
		<title>值得称赞的Sass</title>
		<link>http://zicjin.wordpress.com/2011/07/12/%e5%80%bc%e5%be%97%e7%a7%b0%e8%b5%9e%e7%9a%84sass/</link>
		<comments>http://zicjin.wordpress.com/2011/07/12/%e5%80%bc%e5%be%97%e7%a7%b0%e8%b5%9e%e7%9a%84sass/#comments</comments>
		<pubDate>Mon, 11 Jul 2011 21:36:00 +0000</pubDate>
		<dc:creator>Cheney Jin</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://zicjin.wordpress.com/2011/07/12/%e5%80%bc%e5%be%97%e7%a7%b0%e8%b5%9e%e7%9a%84sass</guid>
		<description><![CDATA[http://sass-lang.com/tutorial.html 很早就想尝试这个HAML团队的杰作，放在todo-list里一直做冷板凳，最近手头时间比较宽松终于能拿出来了。 用了半天时间，把当前手上一个项目的css全部转换为scss（是个较大的项目，估计有上2千行），可见其转换过程并不痛苦，我自己感觉也是比较顺畅的，这彻底打消了我在less和scss间做选择的纠结。 语法很简单，看完Tutorial就没问题了，Documentation基本上都不用看。 相比较而言，前段时间尝试的coffescript给我的感觉过于嚣张啦~~在好多没必要的地方过份包装，不符合我最看重的kissy原则（只做最需要去做的事情），完全把javascript扔到了脑后，让使用者找不到写js的感觉了，可能是作者太喜欢ruby了吧。 我觉得coffescript应该秉承一条核心使命，它并需要把js来一个彻底的华丽转身，因为js社区的基础已经非常雄厚，很多人的相关编码经验没必要抛弃。coffescript的使命应该只有一条最简单的：减少javascript的代码行数！ 从今年开始，node.js社区的发力，seajs的出世，coffescript、sass项目的成熟标志着前端开发在这一年进入了新的加速期。如果这些好项目都今后能够健康发展，未来我们可以称今年为二次元年吗？ 最后，放一个我用scss实现的一个kissy框架双飞翼布局中的代码生成功能。以前生成双飞翼布局的代码都要跑这个页面去，非常不coder，现在用scss即能够亲松实现代码生成： /*#region Grids */ body{text-align:center;} .wapper{margin:0 auto;width:960px;position:relative;text-align:left;} .col-main {float: left;width: 100%; min-height: 1px;} .col-sub, .col-extra {float: left;} .layout:after, .main-wrap:after, .col-sub:after, .col-extra:after {content: '\20';display: block;height: 0;clear: both;} .layout, .main-wrap, .col-sub, .col-extra {zoom: 1;} @mixin &#8230; <a href="http://zicjin.wordpress.com/2011/07/12/%e5%80%bc%e5%be%97%e7%a7%b0%e8%b5%9e%e7%9a%84sass/">繼續閱讀 <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zicjin.wordpress.com&amp;blog=2119805&amp;post=471347&amp;subd=zicjin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://sass-lang.com/tutorial.html"><span class="Apple-style-span" style="font-family:Arial, Helvetica, sans-serif;">http://sass-lang.com/tutorial.html</span></a><br />
<span class="Apple-style-span" style="font-family:Arial, Helvetica, sans-serif;">很早就想尝试这个HAML团队的杰作，放在todo-list里一直做冷板凳，最近手头时间比较宽松终于能拿出来了。</span><br />
<span class="Apple-style-span" style="font-family:Arial, Helvetica, sans-serif;">用了半天时间，把当前手上一个项目的css全部转换为scss（是个较大的项目，估计有上2千行），可见其转换过程并不痛苦，我自己感觉也是比较顺畅的，这彻底打消了我在<a href="https://github.com/cloudhead/less">less</a>和scss间做选择的纠结。</span><br />
<span class="Apple-style-span" style="font-family:Arial, Helvetica, sans-serif;">语法很简单，看完Tutorial就没问题了，<span style="color:black;">Documentation</span>基本上都不用看。</span></p>
<p>相比较而言，前段时间尝试的<a href="http://jashkenas.github.com/coffee-script/">coffescript</a>给我的感觉过于嚣张啦~~在好多没必要的地方过份包装，不符合我最看重的kissy原则（只做最需要去做的事情），完全把javascript扔到了脑后，让使用者找不到写js的感觉了，可能是作者太喜欢ruby了吧。</p>
<p><span class="Apple-style-span" style="font-family:Arial, Helvetica, sans-serif;">我觉得coffescript应该秉承一条核心使命，它并需要把js来一个彻底的华丽转身，因为js社区的基础已经非常雄厚，很多人的相关编码经验没必要抛弃。coffescript的使命应该只有一条最简单的：减少javascript的代码行数！</span><br />
<span class="Apple-style-span" style="font-family:Arial, Helvetica, sans-serif;">从今年开始，node.js社区的发力，seajs的出世，coffescript、sass项目的成熟标志着前端开发在这一年进入了新的加速期。如果这些好项目都今后能够健康发展，未来我们可以称今年为二次元年吗？</span></p>
<p><span class="Apple-style-span" style="font-family:Arial, Helvetica, sans-serif;">最后，放一个我用scss实现的一个kissy框架双飞翼布局中的代码生成功能。</span><span class="Apple-style-span" style="font-family:Arial, Helvetica, sans-serif;">以前生成双飞翼布局的代码都要跑</span><span class="Apple-style-span" style="font-family:Arial, Helvetica, sans-serif;"><a href="http://kissy.googlecode.com/svn/trunk/src/cssgrids/css-generator.html">这个页面</a></span><span class="Apple-style-span" style="font-family:Arial, Helvetica, sans-serif;">去，非常不coder，现在用scss即能够亲松实现代码生成：</span></p>
<pre>/*#region Grids */
body{text-align:center;}
.wapper{margin:0 auto;width:960px;position:relative;text-align:left;}
.col-main {float: left;width: 100%; min-height: 1px;}
.col-sub, .col-extra {float: left;}
.layout:after, .main-wrap:after, .col-sub:after, .col-extra:after {content: '\20';display: block;height: 0;clear: both;}
.layout, .main-wrap, .col-sub, .col-extra {zoom: 1;}

@mixin grid-sxm0($scol) {
.main-wrap { margin-left: $scol*40px; }
.col-sub { width: $scol*40 - 10px; margin-left: -100%; }
}
.grid-s4m0{@include grid-sxm0(4);}
.grid-s5m0{@include grid-sxm0(5);}
.grid-s6m0{@include grid-sxm0(6);}
.grid-s7m0{@include grid-sxm0(7);}

@mixin grid-m0sx($scol) {
.main-wrap { margin-right: $scol*40px; }
.col-sub { width: $scol*40 - 10px; margin-left: $scol*40 - 10px; }
}
.grid-m0s6{@include grid-m0sx(6);}
.grid-m0s7{@include grid-m0sx(7);}
.grid-m0s8{@include grid-m0sx(8);}
.grid-m0s9{@include grid-m0sx(9);}
.grid-m0s10{@include grid-m0sx(10);}

@mixin grid-exm0sx($ecol, $scol) {
.main-wrap { margin: 0 $scol*40 0 $ecol*40; }
.col-sub { width: $scol*40 - 10px; margin-left: -($scol*40 - 10px); }
.col-extra { width: $ecol*40 - 10px; margin-left: -100%; }
}
.grid-e6m0s5{@include grid-exm0sx(6,5);}

@mixin grid-m0sxx($xx) {
.main-wrap { margin-right: $xx + 10px; }
.col-sub { width: $xx; margin-left: -$xx; }
}
.grid-m0s220{@include grid-m0sxx(220);}
/*#endregion Grids */</pre>
<br />Filed under: <a href='http://zicjin.wordpress.com/category/develop/web/'>Web</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zicjin.wordpress.com/471347/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zicjin.wordpress.com/471347/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zicjin.wordpress.com/471347/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zicjin.wordpress.com/471347/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/zicjin.wordpress.com/471347/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/zicjin.wordpress.com/471347/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/zicjin.wordpress.com/471347/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/zicjin.wordpress.com/471347/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zicjin.wordpress.com/471347/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zicjin.wordpress.com/471347/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zicjin.wordpress.com/471347/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zicjin.wordpress.com/471347/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zicjin.wordpress.com/471347/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zicjin.wordpress.com/471347/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zicjin.wordpress.com&amp;blog=2119805&amp;post=471347&amp;subd=zicjin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zicjin.wordpress.com/2011/07/12/%e5%80%bc%e5%be%97%e7%a7%b0%e8%b5%9e%e7%9a%84sass/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fcb409c2a093880a048e41e8521cfa88?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">zicjin</media:title>
		</media:content>
	</item>
		<item>
		<title>《狗镇》：我们是如何走到今日的？</title>
		<link>http://zicjin.wordpress.com/2011/06/30/%e3%80%8a%e7%8b%97%e9%95%87%e3%80%8b%ef%bc%9a%e6%88%91%e4%bb%ac%e6%98%af%e5%a6%82%e4%bd%95%e8%b5%b0%e5%88%b0%e4%bb%8a%e6%97%a5%e7%9a%84%ef%bc%9f/</link>
		<comments>http://zicjin.wordpress.com/2011/06/30/%e3%80%8a%e7%8b%97%e9%95%87%e3%80%8b%ef%bc%9a%e6%88%91%e4%bb%ac%e6%98%af%e5%a6%82%e4%bd%95%e8%b5%b0%e5%88%b0%e4%bb%8a%e6%97%a5%e7%9a%84%ef%bc%9f/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 23:06:00 +0000</pubDate>
		<dc:creator>Cheney Jin</dc:creator>
				<category><![CDATA[Analysis]]></category>

		<guid isPermaLink="false">http://zicjin.wordpress.com/2011/06/30/%e3%80%8a%e7%8b%97%e9%95%87%e3%80%8b%ef%bc%9a%e6%88%91%e4%bb%ac%e6%98%af%e5%a6%82%e4%bd%95%e8%b5%b0%e5%88%b0%e4%bb%8a%e6%97%a5%e7%9a%84%ef%bc%9f</guid>
		<description><![CDATA[公元前399年，哲学家苏格拉底被判死刑。死于全体雅典公民之手，雅典公民民主投票的结果是：280：221。 当年的古希腊是号称民主的起源地，通俗的讲就是纯粹的民主，纯粹的人民意志。 很好听的词儿是吧？其实这里还有个完全相等的词儿：人民暴政。 即等于纯粹的民主。 随着时代的发展与变迁，特别是经历了法国大革命的洗礼，人们终于逐渐学会了，民主是需要控制的（想学学如何控制？推荐这篇贱文：民主共和宪政和黑手党政治），并且越小的集体越容易出现民主暴政，简单的讲就是多数人欺负少数人。如果只有三个人投票，1.8米以上身高的人多争收100%的个税，那三人中另外两个1.8米以下的人会放过这个议案吗？ 在人数少的时候，负面道德压力变得更小，而正面道德压力永远都是差不多大，因为，那几乎只是你一个人的内心。 《狗镇》这部电影用最为纯粹、血淋淋的故事，警告了我们一定要看清人性。 其实，当年的鲁迅真的洞悉人性，，，只不过太多的中国人读鲁迅的书只当吃了碗泡面，还自夸自己吃过中国最牛的泡面。人性之恶已经让我们无数个伟大的思想家，艺术家，政治家吃了鳖。 《狗镇》就像一片刺眼的烈日，虽然说不出的难受，但是，它确实照亮了我们身前身后的道路，虽然这两道风景都是鲜血淋漓。所有对这个世界抱着天真幻想的人都应该去看看，接受它的洗礼。那些教会过我们什么叫做恨的人，让我们终于摆脱了愚蠢的傲慢和瞎眼的善良。它让我们知道自己是如何活下来，又将如何活下去。 PS:民主与共和的相互劫持坐庄是目前人类所能探索到的最平整的前进道路…… Filed under: Analysis<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zicjin.wordpress.com&amp;blog=2119805&amp;post=471346&amp;subd=zicjin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="https://picasaweb.google.com/lh/photo/Yg5jjSTBPbVhjyV0yBBnt0jBXLJem-I3Zj0R8IHieXQ?feat=embedwebsite"><img src="https://lh5.googleusercontent.com/-ekxkjnMeU0Y/TlyJYOhwiFI/AAAAAAAAHbQ/ix2-_AjNcOw/s800/p697993739.jpg" alt="" width="407" height="600" /></a></p>
<p>公元前399年，哲学家苏格拉底被判死刑。死于全体雅典公民之手，雅典公民民主投票的结果是：280：221。<br />
当年的古希腊是号称民主的起源地，通俗的讲就是纯粹的民主，纯粹的人民意志。<br />
很好听的词儿是吧？其实这里还有个完全相等的词儿：人民暴政。<br />
即等于纯粹的民主。</p>
<p>随着时代的发展与变迁，特别是经历了法国大革命的洗礼，人们终于逐渐学会了，民主是需要控制的（想学学如何控制？推荐这篇贱文：<a href="http://xubinism.blog.163.com/blog/static/10586078120115100132872/">民主共和宪政和黑手党政治</a>），并且越小的集体越容易出现民主暴政，简单的讲就是多数人欺负少数人。如果只有三个人投票，1.8米以上身高的人多争收100%的个税，那三人中另外两个1.8米以下的人会放过这个议案吗？<br />
在人数少的时候，负面道德压力变得更小，而正面道德压力永远都是差不多大，因为，那几乎只是你一个人的内心。<br />
《狗镇》这部电影用最为纯粹、血淋淋的故事，警告了我们一定要看清人性。</p>
<p><a href="https://picasaweb.google.com/lh/photo/hMq3G-2hSF8xLZkD8u40FUjBXLJem-I3Zj0R8IHieXQ?feat=embedwebsite"><img src="https://lh4.googleusercontent.com/-9OsgaY19m9k/Tlyb2eBumQI/AAAAAAAAH6E/bYka17Wx7cE/s800/4298685844325536693.jpg" alt="" /></a></p>
<p>其实，当年的鲁迅真的洞悉人性，，，只不过太多的中国人读鲁迅的书只当吃了碗泡面，还自夸自己吃过中国最牛的泡面。人性之恶已经让我们无数个伟大的思想家，艺术家，政治家吃了鳖。</p>
<p>《狗镇》就像一片刺眼的烈日，虽然说不出的难受，但是，它确实照亮了我们身前身后的道路，虽然这两道风景都是鲜血淋漓。所有对这个世界抱着天真幻想的人都应该去看看，接受它的洗礼。那些教会过我们什么叫做恨的人，让我们终于摆脱了愚蠢的傲慢和瞎眼的善良。它让我们知道自己是如何活下来，又将如何活下去。</p>
<p>PS:民主与共和的相互劫持坐庄是目前人类所能探索到的最平整的前进道路……</p>
<br />Filed under: <a href='http://zicjin.wordpress.com/category/analysis/'>Analysis</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zicjin.wordpress.com/471346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zicjin.wordpress.com/471346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zicjin.wordpress.com/471346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zicjin.wordpress.com/471346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/zicjin.wordpress.com/471346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/zicjin.wordpress.com/471346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/zicjin.wordpress.com/471346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/zicjin.wordpress.com/471346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zicjin.wordpress.com/471346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zicjin.wordpress.com/471346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zicjin.wordpress.com/471346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zicjin.wordpress.com/471346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zicjin.wordpress.com/471346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zicjin.wordpress.com/471346/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zicjin.wordpress.com&amp;blog=2119805&amp;post=471346&amp;subd=zicjin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zicjin.wordpress.com/2011/06/30/%e3%80%8a%e7%8b%97%e9%95%87%e3%80%8b%ef%bc%9a%e6%88%91%e4%bb%ac%e6%98%af%e5%a6%82%e4%bd%95%e8%b5%b0%e5%88%b0%e4%bb%8a%e6%97%a5%e7%9a%84%ef%bc%9f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fcb409c2a093880a048e41e8521cfa88?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">zicjin</media:title>
		</media:content>

		<media:content url="//lh5.googleusercontent.com/-ekxkjnMeU0Y/TlyJYOhwiFI/AAAAAAAAHbQ/ix2-_AjNcOw/s800/p697993739.jpg" medium="image" />

		<media:content url="//lh4.googleusercontent.com/-9OsgaY19m9k/Tlyb2eBumQI/AAAAAAAAH6E/bYka17Wx7cE/s800/4298685844325536693.jpg" medium="image" />
	</item>
		<item>
		<title>read jquery.js</title>
		<link>http://zicjin.wordpress.com/2011/05/06/read-jquery-js/</link>
		<comments>http://zicjin.wordpress.com/2011/05/06/read-jquery-js/#comments</comments>
		<pubDate>Thu, 05 May 2011 21:24:00 +0000</pubDate>
		<dc:creator>Cheney Jin</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://zicjin.wordpress.com/2011/05/06/read-jquery-js</guid>
		<description><![CDATA[抽空读了读jquery代码，确实颇有收获。首先放上整体代码结构： (function (window, undefined) { var document = window.document; var jQuery = (function() { var jQuery =&#160; function( selector, context ) { return new jQuery.fn.init( selector, context, rootjQuery ); }; jQuery.fn = jQuery.prototype = { constructor: jQuery, init: function (selector, &#8230; <a href="http://zicjin.wordpress.com/2011/05/06/read-jquery-js/">繼續閱讀 <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zicjin.wordpress.com&amp;blog=2119805&amp;post=471345&amp;subd=zicjin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><font><font size="2" face="Consolas"></font></font><font size="2" face="Consolas">抽空读了读jquery代码，确实颇有收获。</font><font size="2" face="Consolas">首先放上整体代码结构：</font></p>
<p style="line-height:normal;margin:0;"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#000000">(</font></span><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#0000ff">function</font></span><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#000000"> (window, undefined) {</font></span><span lang="EN-US"></span></font></font></p>
<p style="line-height:normal;margin:0;"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#0000ff">var</font></span><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#000000"> document = window.document;</font></span><span lang="EN-US"></span></font></font></p>
<p style="line-height:14pt;margin:0;"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#0000ff">var</font></span><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#000000"> jQuery = (</font></span><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#0000ff">function</font></span><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#000000">() {</font></span><span lang="EN-US"></span></font></font></p>
<p style="line-height:14pt;margin:0 0 0 27pt;"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#0000ff">var</font></span><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#000000"> jQuery =<span>&nbsp; </span></font></span><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#0000ff">function</font></span><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#000000">( selector, context ) {</font></span><span lang="EN-US"></span></font></font></p>
<p style="line-height:normal;margin:0 0 0 54pt;"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#0000ff">return</font></span><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#000000"> </font></span><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#0000ff">new</font></span><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#000000"> jQuery.fn.init( selector, context, rootjQuery );</font></span><span lang="EN-US"></span></font></font></p>
<p style="line-height:14pt;margin:0 0 0 27pt;"><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#000000" size="2" face="Consolas">};</font></span><span lang="EN-US"></span></p>
<p style="line-height:14pt;margin:0;"><span lang="EN-US"><font color="#0f0f0f" size="2" face="Consolas"></font></span></p>
<p style="line-height:normal;margin:0 0 0 27pt;"><span lang="EN-US"><font color="#0f0f0f" size="2" face="Consolas">jQuery.fn = jQuery.prototype = {</font></span></p>
<p style="line-height:normal;margin:0 0 0 54pt;"><span lang="EN-US"><font color="#0f0f0f" size="2" face="Consolas">constructor: jQuery,</font></span></p>
<p style="line-height:normal;margin:0 0 0 54pt;"><span lang="EN-US"><font color="#0f0f0f" size="2" face="Consolas">init: function (selector, context, rootjQuery) {</font></span></p>
<p style="line-height:normal;margin:0 0 0 81pt;"><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#008000" size="2" face="Consolas">// &#8230;</font></span><span lang="EN-US"></span></p>
<p style="line-height:normal;margin:0 0 0 81pt;"><span lang="EN-US"><font color="#0f0f0f" size="2" face="Consolas">if (selector.nodeType) {</font></span></p>
<p style="line-height:normal;margin:0 0 0 108pt;"><span lang="EN-US"><font color="#0f0f0f" size="2" face="Consolas">this.context = this[0] = selector;</font></span></p>
<p style="line-height:normal;margin:0 0 0 108pt;"><span lang="EN-US"><font color="#0f0f0f" size="2" face="Consolas">this.length = 1;</font></span></p>
<p style="line-height:normal;margin:0 0 0 108pt;"><span lang="EN-US"><font color="#0f0f0f" size="2" face="Consolas">return this;</font></span></p>
<p style="line-height:normal;margin:0 0 0 81pt;"><span lang="EN-US"><font color="#0f0f0f" size="2" face="Consolas">}</font></span></p>
<p style="line-height:normal;margin:0 0 0 81pt;"><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#008000" size="2" face="Consolas">// &#8230;</font></span><span lang="EN-US"></span></p>
<p style="line-height:normal;margin:0 0 0 54pt;"><span lang="EN-US"><font color="#0f0f0f" size="2" face="Consolas">},</font></span></p>
<p style="line-height:14pt;margin:0 0 0 54pt;"><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#008000" size="2" face="Consolas">// &#8230;</font></span><span lang="EN-US"></span></p>
<p style="line-height:normal;margin:0 0 0 27pt;"><span lang="EN-US"><font color="#0f0f0f" size="2" face="Consolas">};</font></span></p>
<p style="line-height:normal;margin:0;"><span lang="EN-US"><font color="#0f0f0f" size="2" face="Consolas"></font></span></p>
<p style="line-height:normal;margin:0 0 0 27pt;"><span lang="EN-US"><font color="#0f0f0f" size="2" face="Consolas">jQuery.fn.init.prototype = jQuery.fn;</font></span></p>
<p style="line-height:normal;margin:0;"><span lang="EN-US"><font color="#0f0f0f" size="2" face="Consolas"></font></span></p>
<p style="line-height:14pt;margin:0 0 0 27pt;"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#000000">jQuery.extend = jQuery.fn.extend = </font></span><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#0000ff">function</font></span><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#000000">() {</font></span></font></font></p>
<p style="line-height:14pt;margin:0 0 0 27pt;"><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#008000" size="2" face="Consolas">&nbsp;&nbsp;&nbsp;&nbsp; // &#8230;</font></span></p>
<p style="line-height:14pt;margin:0 0 0 27pt;"><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#000000" size="2" face="Consolas">};</font></span><span lang="EN-US"></span></p>
<p style="line-height:14pt;margin:0;"><span lang="EN-US"><font color="#0f0f0f" size="2" face="Consolas"></font></span></p>
<p style="line-height:14pt;margin:0 0 0 27pt;"><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#000000" size="2" face="Consolas">jQuery.extend({</font></span><span lang="EN-US"></span></p>
<p style="line-height:normal;margin:0 0 0 54pt;"><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#000000" size="2" face="Consolas">noConflict:function(){},</font></span><span lang="EN-US"></span></p>
<p style="line-height:normal;margin:0 0 0 54pt;"><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#000000" size="2" face="Consolas">Ready:function(){},</font></span><span lang="EN-US"></span></p>
<p style="line-height:14pt;margin:0 0 0 54pt;"><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#008000" size="2" face="Consolas">// &#8230;</font></span><span lang="EN-US"></span></p>
<p style="line-height:14pt;margin:0 0 0 27pt;"><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#000000" size="2" face="Consolas">});</font></span><span lang="EN-US"></span></p>
<p style="line-height:14pt;margin:0;"><span lang="EN-US"><font color="#0f0f0f" size="2" face="Consolas"></font></s></p>
<p style="line-height:14pt;margin:0 0 0 27pt;"><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#008000" size="2" face="Consolas">// &#8230;</font></span><span lang="EN-US"></span></p>
<p style="line-height:14pt;margin:0 0 0 27pt;"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#0000ff">return</font></span><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#000000"> jQuery;</font></span><span lang="EN-US"></span></font></font></p>
<p style="line-height:14pt;margin:0;"><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#000000" size="2" face="Consolas">})();</font></span><span lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;"><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#000000" size="2" face="Consolas">jQuery.extend({</font></span><span lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;"><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#000000" size="2" face="Consolas">});</font></span><span lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;"><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#008000" size="2" face="Consolas">// &#8230;</font></span><span lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;"><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#000000" size="2" face="Consolas">window.jQuery = window.$ = jQuery</font></span><span lang="EN-US"></span></p>
<p style="line-height:normal;margin:0;"><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#000000" size="2" face="Consolas">})(window);</font></span></p>
<p><font size="2" face="Consolas"><br />
<hr /> </font>
<p style="line-height:normal;margin:0;"><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#000000"><font size="2" face="Consolas">首先为何会有两层(function…)()自执行函数的疑问我觉得应该解释为为了更好的模块化开发，在</font><a href="https://github.com/jquery/jquery"><font size="2" face="Consolas">github</font></a><font size="2" face="Consolas">中有模块化的源码</font></font></span></p>
<p><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#000000">
<p style="line-height:normal;margin:0;"><font size="2" face="Consolas"></font></p>
<hr />
<p style="line-height:normal;margin:0;"><font size="2" face="Consolas">看过《javasctipt权威指南》应该能更好的理解new语法到底为何物，也就自然能理解为何在jquery中new $()与执行$()结果一模一样</font></p>
<p><font size="2" face="Consolas"><br />
<hr /> </font></font></span>
<p style="line-height:normal;margin:0;"><span style="background:none transparent scroll repeat 0 0;" lang="EN-US"><font color="#000000" size="2" face="Consolas">重点：</font></span></p>
<p style="line-height:normal;margin:0;" lang="en-US"><font color="#c00000" size="2" face="Consolas">jQuery.prototype</font></p>
<p style="line-height:normal;margin:0;" lang="en-US"><font color="#c00000" size="2" face="Consolas">=== jQuery.fn</font></p>
<p style="line-height:normal;margin:0;" lang="en-US"><font color="#c00000" size="2" face="Consolas">=== jQuery.fn.init.prototype</font></p>
<p style="line-height:normal;margin:0;" lang="en-US"><font size="2" face="Consolas">逻辑上此处有矛盾，fn与fn.init.prototype形成了循环包含，但这也正体现了js为值对象语言的特征，一切皆为值拷贝（jQuery.fn.init.prototype = jQuery.fn）</font></p>
<p style="line-height:normal;margin:0;" lang="en-US"><font size="2" face="Consolas">PS：$.extend使用深度copy突破了值拷贝障碍，下节分析，目前$.extend的可读性并不好，充斥着魔鬼数字。</font></p>
<p><font size="2" face="Consolas"><br />
<hr /> </font>
<p style="line-height:normal;margin:0;" lang="en-US"><font color="#000000" size="2" face="Consolas">jquery.fn的成员：</font></p>
<ul>
<li><font color="#000000" size="2" face="Consolas">init &#8211; 初始化</font>
<li><font color="#000000" size="2" face="Consolas">constructor &#8211; 手动指定构造函数，因为默认是 jQuery.fn.init</font>
<li><font color="#000000" size="2" face="Consolas">length &#8211; 让这个对象更接近一个原生的数组</font>
<li><font color="#000000" size="2" face="Consolas">size &#8211; 返回 length</font>
<li><font color="#000000" size="2" face="Consolas">toArray &#8211; 通过 Array.prototype slice 实现生成数组</font>
<li><font color="#000000" size="2" face="Consolas">get &#8211; 即 this[ num ] 参数索引的处理。</font>
<li><font color="#000000" size="2" face="Consolas">pushStack &#8211; 加入一个元素</font>
<li><font color="#000000" size="2" face="Consolas">ready – DOM文档加载后执行</font>
<li><font color="#000000" size="2" face="Consolas">end &#8211; 返回保存的 prevObject 对象</font>
<li><font color="#000000" size="2" face="Consolas">each &#8211; 循环执行</font> </li>
</ul>
<p><font size="2" face="Consolas"><br />
<hr /> </font>
<p style="line-height:normal;margin:0;"><font color="#000000"><font face="Consolas"><font size="2"><span lang="zh-CN">平常的</span><span lang="en-US"> $(&#8220;#id&#8221;) </span><span lang="zh-CN">就是</span><span lang="en-US">&nbsp;</span><span lang="en-US"> new jQuery.fn.init(&#8220;#id&#8221;);</span></font></font></font></p>
<p style="line-height:normal;margin:0;"><font face="Consolas"><font size="2"><font color="#000000"><span lang="en-US">init</span><span lang="zh-CN">函数中，返回值</span><span lang="en-US">this</span><span lang="zh-CN">附加上</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US">context</span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">、</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US">length</span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">等参数后再附带上</span></font><font color="#c00000"><span lang="en-US">jQuery.fn.init.prototype</span><span lang="zh-CN">（即</span><span lang="en-US">jQuery.fn</span><span lang="zh-CN">）</span></font><span lang="zh-CN"><font color="#000000">返回给调用者</font></span></font></font></p>
<p style="line-height:normal;margin:0;"><span lang="zh-CN"><font color="#000000" size="2" face="Consolas">以下为init函数注释代码：</font></span></p>
<p style="line-height:normal;margin:0;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><font color="#000000">init: </font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">function</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000">( selector, context, rootjQuery ) {</font></span></font></font></p>
<p style="line-height:14pt;margin:0;"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="en-US"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="en-US">// </span></font><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">参数</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US">:<span>&nbsp; </span>selector<span>&nbsp; </span></span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">选择器</span></font></font></font></p>
<p style="line-height:14pt;margin:0;"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="en-US"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="background:none transparent scroll repeat 0 0;" lang="en-US"><font color="#008000">//<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>context<span>&nbsp; </span></font></span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN"><font color="#0080<br />
00&#8243;>上下文</font></span></font></font></p>
<p style="line-height:14pt;margin:0;"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="en-US"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="en-US">//<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>rootjQuery </span></font><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN"><font color="#008000">父节点</font></span></font></font></p>
<p style="line-height:14pt;margin:0;"><font color="#0f0f0f" size="2" face="Consolas">&nbsp;</font></p>
<p style="line-height:14pt;margin:0;"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="en-US"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="en-US">// </span></font><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">处理</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US"> $(&#8220;&#8221;)</span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">、</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US"> $(null) </span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">和</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US"> $(undefined)</span></font></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">if</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"> ( !selector ) {</font></span></font></font></p>
<p style="line-height:14pt;margin:0 0 0 .75in;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">return</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"> </font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">this</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000">;</font></span></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"><font face="Consolas"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>}</font></font></font></span></p>
<p style="line-height:14pt;margin:0;"><font color="#0f0f0f" size="2" face="Consolas">&nbsp;</font></p>
<p style="line-height:14pt;margin:0;"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="en-US"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="en-US">// </span></font><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">处理</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US"> $(DOMElement)</span></font></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">if</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"> ( selector.nodeType ) {</font></span></font></font></p>
<p style="line-height:14pt;margin:0;"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="en-US"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="en-US">// </span></font><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">直接扔数组中，</span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN"> </span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">就搞定了。</span></font></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">this</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000">.context = </font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">this</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000">[0] = selector;</font></span></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">this</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000">.length = 1;</font></span></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">return</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"> </font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">this</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000">;</font></span></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"><font face="Consolas"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>}</font></font></font></span></p>
<p style="line-height:14pt;margin:0;"><font color="#0f0f0f" size="2" face="Consolas">&nbsp;</font></p>
<p style="line-height:14pt;margin:0;"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="en-US"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="en-US">// </span></font><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">处理</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US"> $(&#8220;body&#8221;)<span>&nbsp;&nbsp; </span>body </span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">元素只存在一次，单独找它</span></font></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">if</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"> ( selector === &#8220;body&#8221; &amp;&amp; !context &amp;&amp; document.body ) {</font></span></font></font></p>
<p style="line-height:14pt;margin:0;"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="en-US"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;nbsp<br />
;&nbsp;&nbsp; </font></span></span><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="en-US">// </span></font><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">同样扔数组中，</span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN"> </span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">顺便把</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US"> selector </span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">更新更新。</span></font></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">this</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000">.context = document;</font></span></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">this</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000">[0] = document.body;</font></span></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">this</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000">.selector = &#8220;body&#8221;;</font></span></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">this</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000">.length = 1;</font></span></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">return</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"> </font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">this</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000">;</font></span></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"><font face="Consolas"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>}</font></font></font></span></p>
<p style="line-height:14pt;margin:0;"><font color="#0f0f0f" size="2" face="Consolas">&nbsp;</font></p>
<p style="line-height:14pt;margin:0;"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="en-US"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="en-US">// </span></font><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">处理</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US"> $(HTML </span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">代码</span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN"> </span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">或者是</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US"> css </span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">选择器</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US">)<span>&nbsp; </span></span></font></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">if</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"> ( </font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">typeof</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"> selector === &#8220;string&#8221; ) {</font></span></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><span style="background:none transparent scroll repeat 0 0;"><span><font color="#000000" size="2" face="Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span></p>
<p style="line-height:14pt;margin:0 0 0 .75in;" lang="en-US"><span style="background:none transparent scroll repeat 0 0;"><font color="#000000" size="2" face="Consolas">match = quickExpr.exec( selector );</font></span></p>
<p style="line-height:14pt;margin:0 0 0 .75in;"><font color="#008000"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="en-US">// </span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">检查是否正确匹配</span></font></font></font></p>
<p style="line-height:14pt;margin:0 0 0 .75in;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">if</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"> ( match &amp;&amp; (match[1] || !context) ) {</font></span></font></font></p>
<p style="line-height:14pt;margin:0 0 0 1.125in;"><font color="#008000"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="en-US">// </span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">处理</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US">: $(html) -&gt; $(array)</span></font></font></font></p>
<p style="line-height:14pt;margin:0 0 0 1.125in;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">if</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"> ( match[1] ) {</font></span></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><span style="background:none transparent scroll repeat 0 0;"><span><font color="#000000" size="2" face="Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span></p>
<p style="line-height:14pt;margin:0 0 0 1.125in;"><font color="#008000"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="en-US">// </span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">获取正文，默认</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US"> document</span></font></font></font></p>
<p style="line-height:14pt;margin:0 0 0 1.125in;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><font color="#000000">context = context </font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">instanceof</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"> jQuery ? context[0] : context;</font></span></font></font></p>
<p style="line-height:14pt;margin:0 0 0 1.125in;" lang="en-US"><span style="background:none transparent scroll repeat 0 0;"><font color="#000000" size="2" face="Consolas">doc = (context ? context.ownerDocument || context : document);</font></span></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><span style="background:none transparent scroll repeat 0 0;"><span><font color="#000000" size="2" face="Consolas">&nbsp; </font></span></span></p>
<p style="line-height:14pt;margin:0 0 0 1.125in;"><font color="#008000"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="en-US">// </span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">如果传入简单的</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US"><span>&nbsp; </span>&#8220;&lt;</span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">标签</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US">&gt;&#8221;</span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">，</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US"><span>&nbsp;&nbsp; </span>( /^&lt;(w+)s*/?&gt;(?:&lt;/1&gt;)?$/)</span></font></font></font></p>
<p style="line-height:14pt;margin:0 0 0 1.125in;" lang="en-US"><span style="background:none transparent scroll repeat 0 0;"><font color="#000000" size="2" face="Consolas">ret = rsingleTag.exec( selector );</font></span></p>
<p style="line-height:14pt;margin:0;"><font color="#0f0f0f" size="2" face="Consolas">&nbsp;</font></p>
<p style="line-height:14pt;margin:0;"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="en-US"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="en-US">// </span></font><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">返回</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US"> createElement(&#8220;tag&#8221;)</span></font></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">return</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"> jQuery.merge( </font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">this</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000">, selector );</font></span></font></font></p>
<p style="line-height:14pt;margin:0;"><font color="#0f0f0f" size="2" face="Consolas">&nbsp;</font></p>
<p style="line-height:14pt;margin:0;"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="en-US"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="en-US">// </span></font><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">处理</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US">: $(&#8220;#id&#8221;)</span></font></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>} </font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">else</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"> {</font></span></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"><font face="Consolas"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>elem = document.getElementById( match[2] );</font></font></font></span></p>
<p style="line-height:14pt;margin:0;"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="en-US"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="en-US">// </span></font><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">因为有的浏览器</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US"> getElementById </span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">不只返回</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US"> id</span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">匹配的，所以做检查。</span></font></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">return</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"> </font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">this</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000">;</font></span></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"><font face="Consolas"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</font></font></font></span></p>
<p style="line-height:14pt;margin:0;"><font color="#0f0f0f" size="2" face="Consolas">&nbsp;</font></p>
<p style="line-height:14pt;margin:0;"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="en-US"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="en-US">// </span></font><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">处理</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US"> $(&#8220;</span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">标签</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US">&#8220;)</span></font></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>} </font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">else</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"> </font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">if</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"> ( !context &amp;&amp; !rnonword.test( selector ) ) {</font></span></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">this</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000">.selector = selector;</font></span></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">this</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000">.context = document;</font></span></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"><font face="Consolas"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>selector = document.getElementsByTagName( selector );</font></font></font></span></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">return</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"> jQuery.merge( </font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">this</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000">, selector );</font></span></font></font></p>
<p style="line-height:14pt;margin:0;"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="en-US"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="en-US">//</span></font><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">处理</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US">: $(</span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">选择器</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US">, $(&#8230;))</span></font></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>} </font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">else</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"> </font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">if</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"> ( !context || context.jquery ) {</font></span></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">return</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"> (context || rootjQuery).find( selector );</font></span></font></font></p>
<p style="line-height:14pt;margin:0;"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="en-US"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="en-US">// </span></font><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">处理</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US">: $(</span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">选择器</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US">,<span>&nbsp; </span></span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">上下文</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US">)</span></font></font></font></p>
<p style="line-height:14pt;margin:0;"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="en-US"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="en-US">// (</span></font><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">相当于</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US">: $(</span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">上下文</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US">).find(</span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">选择器</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US">)</span></font></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>} </font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">else</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"> {</font></span></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">return</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"> </font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">this</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000">.constructor( context ).find( selector );</font></span></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"><font face="Consolas"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>} </font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">else</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"> </font></span><span style="background:none t ransparent scroll repeat 0 0;"><font color="#0000ff">if</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"> ( jQuery.isFunction( selector ) ) {</font></span></font></font></p>
<p style="line-height:14pt;margin:0;"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="en-US"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="en-US">//</span></font><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">如果是函数，则执行</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US">$(document).ready,</span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">这样</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US">$(document).ready(func)</span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">简为</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US">$(func)</span></font></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">return</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"> rootjQuery.ready( selector );</font></span></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"><font face="Consolas"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>}</font></font></font></span></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><span style="background:none transparent scroll repeat 0 0;"><span><font color="#000000" size="2" face="Consolas">&nbsp;&nbsp; </font></span></span></p>
<p style="line-height:14pt;margin:0;"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="en-US"><span><font color="#000000">&nbsp;&nbsp; </font></span></span><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="en-US">// </span></font><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN"><font color="#008000">略。</font></span></font></font></p>
<p style="line-height:14pt;margin:0;"><font color="#0f0f0f" size="2" face="Consolas">&nbsp;</font></p>
<p style="line-height:14pt;margin:0;"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="en-US"><span><font color="#000000">&nbsp;&nbsp; </font></span></span><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="en-US">// </span></font><font color="#008000"><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">如果传入的是一个</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US"> Dom</span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">列表</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US"> ( getElementsByTagName </span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">结果</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US"> ) </span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">则转为</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US"> jQuery </span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">数组。</span></font></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><span><font color="#000000">&nbsp;&nbsp; </font></span></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">return</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"> jQuery.makeArray( selector, </font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">this</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"> );</font></span></font></font></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><span style="background:none transparent scroll repeat 0 0;"><font color="#000000" size="2" face="Consolas">}</font></span></p>
<p><font size="2" face="Consolas"><br />
<hr /> </font>
<p style="line-height:normal;margin:0;"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><font color="#000000">$.extend({ <br />&nbsp;&nbsp;&nbsp; mm: </font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">function</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"> () { alert(</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#800000">&#8216;mm&#8217;</font></span></font></font><span style="background:none transparent scroll repeat 0 0;"><font color="#000000" size="2" face="Consolas">); } <br />});</font></span></p>
<p style="line-height:normal;margin:0;"><span style="background:none transparent scroll repeat 0 0;"><font color="#000000" size="2" face="Consolas">$.mm();</font></span></p>
<p style="line-height:normal;margin:0;"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><font color="#000000">$.fn.mm = </font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">function</font></span></font></font><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"> () { <br />&nbsp;&nbsp;&nbsp; alert(</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">this</font></span></font></font><span style="background:none transparent scroll repeat 0 0;"><font color="#000000" size="2" face="Consolas">.text()); <br />}</font></span></p>
<p style="line-height:normal;margin:0;"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><font color="#000000">$.fn.extend({ <br />&nbsp;&nbsp;&nbsp; mm: </font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">function</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000"> () { alert(</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#0000ff">this</font></span></font></font><span style="background:none transparent scroll repeat 0 0;"><font color="#000000" size="2" face="Consolas">.text()); } <br />});</font></span></p>
<p style="line-height:normal;margin:0;"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;"><font color="#000000">$(</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#800000">&#8216;h2&#8242;</font></span><span style="background:none transparent scroll repeat 0 0;"><font color="#000000">).mm();</font></span></font></font></p>
<p style="line-height:normal;margin:0;"><font color="#000000"><font face="Consolas"><font size="2"><span style="background:none transparent scroll repeat 0 0;" lang="en-US">2</span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">与</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US">3</span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">方案一模一样，</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US">1</span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">与</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US">3</span><span style="background:none transparent scroll repeat 0 0;">方案为同一个</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US">extend</span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">函数，</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US">1</span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">方案执行宿主会被</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US">extend</span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">自动判断为不带</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US">context</span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">的</span><span style="background:none transparent scroll repeat 0 0;" lang="en-US">$</span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">对象</span></font></font></font></p>
<p style="line-height:normal;margin:0;"><font color="#000000" size="2" face="Consolas"></font></p>
<p style="line-height:normal;margin:0;"><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN"><font color="#0000ff"><font size="2" face="Consolas">var</font></font></span><font face="Consolas"><font size="2"><font color="#000000"><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN"> opts = $.extend({ <br /></span><span style="background:none transparent scroll repeat 0 0;" lang="en-US"><span></span></span><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN">val: </span></font><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN"><font color="#0000ff">false</font></span></font></font><span style="background:none transparent scroll repeat 0 0;" lang="zh-CN"> <br /><font color="#000000" size="2" face="Consolas">}, options);</font></span></p>
<p style="line-height:normal;margin:0;"><span style="background:none transparent scroll repeat 0 0;"><font color="#000000" size="2" face="Consolas">返回俩参数合并后的对象，后者覆盖前者 // 可见extend函数有多复杂</font></span></p>
<p style="line-height:normal;margin:0;"><span style="background:none transparent scroll repeat 0 0;"><font color="#000000" size="2" face="Consolas"></font></span></p>
<p style="line-height:14pt;margin:0;" lang="en-US"><font color="#000000" size="2" face="Consolas">贴一下$.extend函数代码：</font></p>
<p style="line-height:normal;margin:0;"><font color="#0f0f0f" size="2" face="Consolas">jQuery.extend = jQuery.fn.extend = function() {</font></p>
<p style="line-height:normal;margin:0 0 0 .375in;"><font color="#0f0f0f"><font face="Consolas"><font size="2"><span>var target = arguments[0] || {}, // </span><span>第一个参数是目标</span></font></font></font></p>
<p style="line-height:normal;margin:0 0 0 .375in;"><font color="#0f0f0f" size="2" face="Consolas">i = 1, length = arguments.length, deep = false, options;</font></p>
<p style="line-height:normal;margin:0 0 0 .375in;"><font color="#0f0f0f"><font face="Consolas"><font size="2"><span>if (target.constructor == Boolean) {// </span><span>第一个参数是</span><span>bool</span><span>型的</span></font></font></font></p>
<p style="line-height:normal;margin:0 0 0 .75in;"><font color="#0f0f0f"><font face="Consolas"><font size="2"><span>deep = target;// </span><span>深度</span><span>copy</span></font></font></font></p>
<p style="line-height:normal;margin:0 0 0 .75in;"><font color="#0f0f0f"><font face="Consolas"><font size="2"><span>target = arguments[1] || {};// target</span><span>指向第二个参数</span></font></font></font></p>
<p style="line-height:normal;margin:0 0 0 .75in;"><font color="#0f0f0f" size="2" face="Consolas">i = 2;</font></p>
<p style="line-height:normal;margin:0 0 0 .375in;"><font color="#0f0f0f" size="2" face="Consolas">}</font></p>
<p style="line-height:normal;margin:0;"><font color="#0f0f0f" size="2" face="Consolas"></font></p>
<p style="line-height:normal;margin:0 0 0 .375in;"><font color="#0f0f0f"><font face="Consolas"><font size="2"><span>// target </span><span>是</span><span>string </span><span>型的或？</span></font></font></font></p>
<p style="line-height:normal;margin:0 0 0 .375in;"><font color="#0f0f0f" size="2" face="Consolas">if (typeof target != &#8220;object&#8221; &amp;&amp; typeof target != &#8220;function&#8221;)</font></p>
<p style="line-height:normal;margin:0 0 0 .75in;"><font color="#0f0f0f" size="2" face="Consolas">target = {};</font></p>
<p style="line-height:normal;margin:0 0 0 .75in;"><font color="#0f0f0f"><font face="Consolas"><font size="2"><span>if (length == i) {// </span><span>只有一个参数？或</span><span>deep copy </span><span>时，两个参数</span></font></font></font></p>
<p style="line-height:normal;margin:0 0 0 1.125in;"><font color="#0f0f0f"><font face="Consolas"><font size="2"><span>target = this;// </span><span>目标为</span><span>this</span></font></font></font></p>
<p style="line-height:normal;margin:0 0 0 1.125in;"><font color="#0f0f0f" size="2" face="Consolas">&#8211;i;</font></p>
<p style="line-height:normal;margin:0 0 0 .375in;"><font color="#0f0f0f" size="2" face="Consolas">}</font></p>
<p style="line-height:normal;margin:0;"><font color="#0f0f0f" size="2" face="Consolas"></font></p>
<p style="line-height:normal;margin:0 0 0 .375in;"><font color="#0f0f0f" size="2" face="Consolas">for (;i &lt; length; i++)</font></p>
<p style="line-height:normal;margin:0 0 0 .75in;"><font color="#0f0f0f" size="2" face="Consolas">if ((options = arguments[i]) != null)</font></p>
<p style="line-height:normal;margin:0 0 0 1.125in;"><font color="#0f0f0f" size="2" face="Consolas">for (var name in options) {</font></p>
<p style="line-height:normal;margin:0 0 0 1.5in;"><font color="#0f0f0f" size="2" face="Consolas">var src = target[name], copy = options[name];</font></p>
<p style="line-height:normal;margin:0 0 0 1.5in;"><font color="#0f0f0f"><font face="Consolas"><font size="2"><span>if (target === copy)// </span><span>防止死循环</span></font></font></font></p>
<p style="line-height:normal;margin:0 0 0 1.875in;"><font color="#0f0f0f" size="2" face="Consolas">continue;</font></p>
<p style="line-height:normal;margin:0 0 0 1.5in;"><font color="#0f0f0f"><font face="Consolas"><font size="2"><span>// </span><span>深度</span><span>copy</span><span>处理，最深为元素</span></font></font></font></p>
<p style="line-height:normal;margin:0 0 0 1.5in;"><font color="#0f0f0f" size="2" face="Consolas">if (deep &amp;&amp; copy &amp;&amp; typeof copy == &#8220;object&#8221; &amp;&amp; !copy.nodeType)</font></p>
<p style="line-height:normal;margin:0 0 0 1.875in;"><font color="#0f0f0f" size="2" face="Consolas">target[name] = jQuery.extend(deep, src</font></p>
<p style="line-height:normal;margin:0 0 0 2.25in;"><font color="#0f0f0f" size="2" face="Consolas">|| (copy.length != null ? [] : {}), copy);</font></p>
<p style="line-height:normal;margin:0 0 0 1.5in;"><font color="#0f0f0f"><font face="Consolas"><font size="2"><span>else if (copy !== undefined)// </span><span>直接</span><span>copy</span></font></font></font></p>
<p style="line-height:normal;margin:0 0 0 1.875in;"><font color="#0f0f0f" size="2" face="Consolas">target[name] = copy;</font></p>
<p style="line-height:normal;margin:0 0 0 1.125in;"><font color="#0f0f0f" size="2" face="Consolas">}</font></p>
<p style="line-height:normal;margin:0 0 0 .375in;"><font color="#0f0f0f" size="2" face="Consolas">return target;</font></p>
<p style="line-height:normal;margin:0;"><font color="#0f0f0f" size="2" face="Consolas">};</font></p>
<p style="line-height:normal;margin:0;"><font color="#0f0f0f" size="2" face="Consolas">extend不但支持深度clone，还能支持多个参数的对象clone到一个指定对象，而不是jquery中。</font></p>
<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8708641178240204865-3456357732757763049?l=zicj.blogspot.com' alt='' /></div>
<br />Filed under: <a href='http://zicjin.wordpress.com/category/develop/web/'>Web</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zicjin.wordpress.com/471345/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zicjin.wordpress.com/471345/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zicjin.wordpress.com/471345/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zicjin.wordpress.com/471345/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/zicjin.wordpress.com/471345/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/zicjin.wordpress.com/471345/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/zicjin.wordpress.com/471345/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/zicjin.wordpress.com/471345/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zicjin.wordpress.com/471345/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zicjin.wordpress.com/471345/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zicjin.wordpress.com/471345/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zicjin.wordpress.com/471345/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zicjin.wordpress.com/471345/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zicjin.wordpress.com/471345/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zicjin.wordpress.com&amp;blog=2119805&amp;post=471345&amp;subd=zicjin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zicjin.wordpress.com/2011/05/06/read-jquery-js/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fcb409c2a093880a048e41e8521cfa88?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">zicjin</media:title>
		</media:content>

		<media:content url="//blogger.googleusercontent.com/tracker/8708641178240204865-3456357732757763049?l=zicj.blogspot.com" medium="image" />
	</item>
		<item>
		<title>构建前端MVC，seajs，underscore.js，backbone.js 等琐碎的其他</title>
		<link>http://zicjin.wordpress.com/2011/04/28/%e6%9e%84%e5%bb%ba%e5%89%8d%e7%ab%afmvc%ef%bc%8cseajs%ef%bc%8cunderscore-js%ef%bc%8cbackbone-js-%e7%ad%89%e7%90%90%e7%a2%8e%e7%9a%84%e5%85%b6%e4%bb%96/</link>
		<comments>http://zicjin.wordpress.com/2011/04/28/%e6%9e%84%e5%bb%ba%e5%89%8d%e7%ab%afmvc%ef%bc%8cseajs%ef%bc%8cunderscore-js%ef%bc%8cbackbone-js-%e7%ad%89%e7%90%90%e7%a2%8e%e7%9a%84%e5%85%b6%e4%bb%96/#comments</comments>
		<pubDate>Thu, 28 Apr 2011 02:03:00 +0000</pubDate>
		<dc:creator>Cheney Jin</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://zicjin.wordpress.com/2011/04/28/%e6%9e%84%e5%bb%ba%e5%89%8d%e7%ab%afmvc%ef%bc%8cseajs%ef%bc%8cunderscore-js%ef%bc%8cbackbone-js-%e7%ad%89%e7%90%90%e7%a2%8e%e7%9a%84%e5%85%b6%e4%bb%96</guid>
		<description><![CDATA[这两天完成了前端MVC的完整构建demo，算是一个小里程碑吧。 backbone.js确实是好东西，但还有些别扭的约定，比如el对象的不可控造成设定el的特殊属性比较麻烦。但一切皆权衡，没有完美，总体而言是非常优秀的架构。 模块管理引用了还在pre期间的seajs，非常cool，几乎是我一直以来梦寐以求的架构。相信能借此规避掉很多很多不必要的麻烦。 今天看了完整的underscore.js源码，代码质量相当高。在backbone.js模型中M层个C层都不应该使用jquery，只有在V层才需要它。但js在工具型类库方法上的薄弱还是会很让人头痛，underscore.js是js最好的“tux”，而绝不应该是jquery。 压缩引擎使用closure-compiler，并且使用了IKVM项目在.NET环境中执行，这样可以自动化部署在TFS的team building环节中。 CssGaga功能很强，非常强，但工具的易用性有待加强，至今提交的一个无解bug依然没有回复，不过相信我最终会用好它的，因为它实在太“可爱”了。 Filed under: Web<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zicjin.wordpress.com&amp;blog=2119805&amp;post=471342&amp;subd=zicjin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>这两天完成了前端MVC的完整构建demo，算是一个小里程碑吧。</p>
<p>
<ul>
<li><span style="font-family:'Times New Roman';font-size:small;"></span> <span style="font-family:'Times New Roman';font-size:small;"></span>
<p style="display:inline!important;">backbone.js确实是好东西，但还有些别扭的约定，比如el对象的不可控造成设定el的特殊属性比较麻烦。但一切皆权衡，没有完美，总体而言是非常优秀的架构。</p>
<li><span style="font-family:'Times New Roman';font-size:small;"></span> <span style="font-family:'Times New Roman';font-size:small;"></span>
<p style="display:inline!important;">模块管理引用了还在pre期间的seajs，非常cool，几乎是我一直以来梦寐以求的架构。相信能借此规避掉很多很多不必要的麻烦。</p>
<li><span style="font-family:'Times New Roman';font-size:small;"></span> <span style="font-family:'Times New Roman';font-size:small;"></span>
<p style="display:inline!important;">今天看了完整的underscore.js源码，代码质量相当高。在backbone.js模型中M层个C层都不应该使用jquery，只有在V层才需要它。但js在工具型类库方法上的薄弱还是会很让人头痛，underscore.js是js最好的“tux”，而绝不应该是jquery。</p>
<li><span style="font-family:'Times New Roman';font-size:small;"></span> <span style="font-family:'Times New Roman';font-size:small;"></span>
<p style="display:inline!important;">压缩引擎使用closure-compiler，并且使用了<a href="http://www.ikvm.net/">IKVM</a>项目在.NET环境中执行，这样可以自动化部署在TFS的team building环节中。</p>
<li><span style="font-family:'Times New Roman';font-size:small;"></span> <span style="font-family:'Times New Roman';font-size:small;"></span>
<p style="display:inline!important;">CssGaga功能很强，非常强，但工具的易用性有待加强，至今提交的一个无解bug依然没有回复，不过相信我最终会用好它的，因为它实在太“可爱”了。</p>
</li>
</ul>
<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8708641178240204865-8201357979277221548?l=zicj.blogspot.com' alt='' /></div>
<br />Filed under: <a href='http://zicjin.wordpress.com/category/develop/web/'>Web</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zicjin.wordpress.com/471342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zicjin.wordpress.com/471342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zicjin.wordpress.com/471342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zicjin.wordpress.com/471342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/zicjin.wordpress.com/471342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/zicjin.wordpress.com/471342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/zicjin.wordpress.com/471342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/zicjin.wordpress.com/471342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zicjin.wordpress.com/471342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zicjin.wordpress.com/471342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zicjin.wordpress.com/471342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zicjin.wordpress.com/471342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zicjin.wordpress.com/471342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zicjin.wordpress.com/471342/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zicjin.wordpress.com&amp;blog=2119805&amp;post=471342&amp;subd=zicjin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zicjin.wordpress.com/2011/04/28/%e6%9e%84%e5%bb%ba%e5%89%8d%e7%ab%afmvc%ef%bc%8cseajs%ef%bc%8cunderscore-js%ef%bc%8cbackbone-js-%e7%ad%89%e7%90%90%e7%a2%8e%e7%9a%84%e5%85%b6%e4%bb%96/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fcb409c2a093880a048e41e8521cfa88?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">zicjin</media:title>
		</media:content>

		<media:content url="//blogger.googleusercontent.com/tracker/8708641178240204865-8201357979277221548?l=zicj.blogspot.com" medium="image" />
	</item>
		<item>
		<title>小结，重整旗鼓</title>
		<link>http://zicjin.wordpress.com/2011/03/20/%e5%b0%8f%e7%bb%93%ef%bc%8c%e9%87%8d%e6%95%b4%e6%97%97%e9%bc%93/</link>
		<comments>http://zicjin.wordpress.com/2011/03/20/%e5%b0%8f%e7%bb%93%ef%bc%8c%e9%87%8d%e6%95%b4%e6%97%97%e9%bc%93/#comments</comments>
		<pubDate>Sun, 20 Mar 2011 13:29:00 +0000</pubDate>
		<dc:creator>Cheney Jin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://zicjin.wordpress.com/2011/03/20/%e5%b0%8f%e7%bb%93%ef%bc%8c%e9%87%8d%e6%95%b4%e6%97%97%e9%bc%93</guid>
		<description><![CDATA[玩了很多SC2，也看了很多GSL，越来越感受到职业电竞真的是不容易，特别是RTS这种单枪匹马的项目。因为游戏规则的局限性，选手之间的差距可能被无限缩小，一个简单的地图设计或者兵种设计就可以把每天练10小时和练2小时的人差距完全忽略掉，甚至反掉。一个BO3连输掉两场被淘汰后立马就有一堆人说你状态不行了，最近没好好练，开始走下坡路了？blablablabla，搞的你自己都可能开始怀疑自己，我无法想像如果我从事什么职业电竞运动员会在多久时间内崩溃。他们拿了很多奖金？我实在没觉得，有这智商的人去倒卖点小生意赚的不会少，生活还自由，想玩SC照样玩。所以，相比较而言，我作为关注了好多年的电竞观众真的很幸福，电视直播从来都是免费，只挤出10分钟时间看一场选手们要在场下练习上百场才成型的比赛，还有什么好说的呢，，，SC2台服cdkey我买了，国服我也肯定会买的，虽然不对其抱多大期望，plu哪天要交钱看比赛了我肯定也会乖乖交的。最后祝所有坚守电竞行业的人幸福，你们的坚韧和勇气是我无法企及的。 最近比较烦，但我不想责怪任何人，也确实没有理由责怪任何人，还是自己不够，，，那叫什么来着？，，，成熟？去他娘的。 大概在一年多前，我开始习惯写日记，不是那种写在博客上的“日记”，是写在OneNote中给只自己看还犯贱加了个密码的日记，每天至少一句话（也基本上只有一两句），每周末还会总结一下把觉得写的不错的打个标签方便翻阅。曾经我以为我的这个做法很成功，人最重要的高级特征之一就是自审嘛。但是现在我发现这很扯蛋，或者说强迫自己自审很扯蛋，自审很可能只能是由内而生的。 我觉得，人之所以活着必须是为了在追求某些东西，这些东西说好听了叫梦想，往俗里面说就是欲望，，，人烦的时候，无非就是感觉自己完全不在追求这些东西的路上，而是被其他乱七八糟的原因牵制住，并且一时间看不到改变现状的可能性。所以呢，烦就烦吧，因为我也清楚，这只是一时间看不到改变现状的可能性而已，肯定不是永远。太多太多次了，回首以前，一件件大事儿都变成了小事儿，小事儿都成了屁事儿。PS：就在今天， 我已经下定决心改变了现状。 Filed under: Uncategorized<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zicjin.wordpress.com&amp;blog=2119805&amp;post=471340&amp;subd=zicjin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>玩了很多SC2，也看了很多GSL，越来越感受到职业电竞真的是不容易，特别是RTS这种单枪匹马的项目。因为游戏规则的局限性，选手之间的差距可能被无限缩小，一个简单的地图设计或者兵种设计就可以把每天练10小时和练2小时的人差距完全忽略掉，甚至反掉。一个BO3连输掉两场被淘汰后立马就有一堆人说你状态不行了，最近没好好练，开始走下坡路了？blablablabla，搞的你自己都可能开始怀疑自己，我无法想像如果我从事什么职业电竞运动员会在多久时间内崩溃。他们拿了很多奖金？我实在没觉得，有这智商的人去倒卖点小生意赚的不会少，生活还自由，想玩SC照样玩。所以，相比较而言，我作为关注了好多年的电竞观众真的很幸福，电视直播从来都是免费，只挤出10分钟时间看一场选手们要在场下练习上百场才成型的比赛，还有什么好说的呢，，，SC2台服cdkey我买了，国服我也肯定会买的，虽然不对其抱多大期望，plu哪天要交钱看比赛了我肯定也会乖乖交的。最后祝所有坚守电竞行业的人幸福，你们的坚韧和勇气是我无法企及的。</p>
<p>最近比较烦，但我不想责怪任何人，也确实没有理由责怪任何人，还是自己不够，，，那叫什么来着？，，，成熟？<br />去他娘的。</p>
<p>大概在一年多前，我开始习惯写日记，不是那种写在博客上的“日记”，是写在OneNote中给只自己看还犯贱加了个密码的日记，每天至少一句话（也基本上只有一两句），每周末还会总结一下把觉得写的不错的打个标签方便翻阅。<br />曾经我以为我的这个做法很成功，人最重要的高级特征之一就是自审嘛。但是现在我发现这很扯蛋，或者说强迫自己自审很扯蛋，自审很可能只能是由内而生的。</p>
<p>我觉得，人之所以活着必须是为了在追求某些东西，这些东西说好听了叫梦想，往俗里面说就是欲望，，，人烦的时候，无非就是感觉自己完全不在追求这些东西的路上，而是被其他乱七八糟的原因牵制住，并且一时间看不到改变现状的可能性。<br />所以呢，烦就烦吧，因为我也清楚，这只是一时间看不到改变现状的可能性而已，肯定不是永远。太多太多次了，回首以前，一件件大事儿都变成了小事儿，小事儿都成了屁事儿。<br />PS：就在今天， 我已经下定决心改变了现状。
<div class="blogger-post-footer"><img width='1' height='1' src='' alt='' /></div>
<br />Filed under: <a href='http://zicjin.wordpress.com/category/uncategorized/'>Uncategorized</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zicjin.wordpress.com/471340/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zicjin.wordpress.com/471340/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zicjin.wordpress.com/471340/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zicjin.wordpress.com/471340/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/zicjin.wordpress.com/471340/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/zicjin.wordpress.com/471340/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/zicjin.wordpress.com/471340/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/zicjin.wordpress.com/471340/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zicjin.wordpress.com/471340/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zicjin.wordpress.com/471340/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zicjin.wordpress.com/471340/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zicjin.wordpress.com/471340/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zicjin.wordpress.com/471340/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zicjin.wordpress.com/471340/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zicjin.wordpress.com&amp;blog=2119805&amp;post=471340&amp;subd=zicjin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zicjin.wordpress.com/2011/03/20/%e5%b0%8f%e7%bb%93%ef%bc%8c%e9%87%8d%e6%95%b4%e6%97%97%e9%bc%93/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fcb409c2a093880a048e41e8521cfa88?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">zicjin</media:title>
		</media:content>

		<media:content url="" medium="image" />
	</item>
		<item>
		<title>分词筛选模块</title>
		<link>http://zicjin.wordpress.com/2011/03/03/%e5%88%86%e8%af%8d%e7%ad%9b%e9%80%89%e6%a8%a1%e5%9d%97/</link>
		<comments>http://zicjin.wordpress.com/2011/03/03/%e5%88%86%e8%af%8d%e7%ad%9b%e9%80%89%e6%a8%a1%e5%9d%97/#comments</comments>
		<pubDate>Thu, 03 Mar 2011 01:53:00 +0000</pubDate>
		<dc:creator>Cheney Jin</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://zicjin.wordpress.com/2011/03/03/%e5%88%86%e8%af%8d%e7%ad%9b%e9%80%89%e6%a8%a1%e5%9d%97</guid>
		<description><![CDATA[公司项目需要，写的一个web前端分词筛选的模块，大概一年前的东西了，今天想起来把它分离出来，今后要多把工作成果发到博客中，多给自己留点足迹。 Filed under: Web<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zicjin.wordpress.com&amp;blog=2119805&amp;post=471336&amp;subd=zicjin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>公司项目需要，写的一个web前端分词筛选的模块，大概一年前的东西了，今天想起来把它分离出来，今后要多把工作成果发到博客中，多给自己留点足迹。</p>
<div class="blogger-post-footer"><img alt="" width="1" height="1" /></div>
<br />Filed under: <a href='http://zicjin.wordpress.com/category/develop/web/'>Web</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zicjin.wordpress.com/471336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zicjin.wordpress.com/471336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zicjin.wordpress.com/471336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zicjin.wordpress.com/471336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/zicjin.wordpress.com/471336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/zicjin.wordpress.com/471336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/zicjin.wordpress.com/471336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/zicjin.wordpress.com/471336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zicjin.wordpress.com/471336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zicjin.wordpress.com/471336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zicjin.wordpress.com/471336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zicjin.wordpress.com/471336/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zicjin.wordpress.com/471336/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zicjin.wordpress.com/471336/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zicjin.wordpress.com&amp;blog=2119805&amp;post=471336&amp;subd=zicjin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zicjin.wordpress.com/2011/03/03/%e5%88%86%e8%af%8d%e7%ad%9b%e9%80%89%e6%a8%a1%e5%9d%97/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fcb409c2a093880a048e41e8521cfa88?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">zicjin</media:title>
		</media:content>
	</item>
		<item>
		<title>翻完《Pro C# 2008 and .NET 3.5 Platform》</title>
		<link>http://zicjin.wordpress.com/2011/03/03/%e7%bf%bb%e5%ae%8c%e3%80%8apro-c-2008-and-net-3-5-platform%e3%80%8b/</link>
		<comments>http://zicjin.wordpress.com/2011/03/03/%e7%bf%bb%e5%ae%8c%e3%80%8apro-c-2008-and-net-3-5-platform%e3%80%8b/#comments</comments>
		<pubDate>Wed, 02 Mar 2011 22:11:00 +0000</pubDate>
		<dc:creator>Cheney Jin</dc:creator>
				<category><![CDATA[Develop]]></category>

		<guid isPermaLink="false">http://zicjin.wordpress.com/2011/03/03/%e7%bf%bb%e5%ae%8c%e3%80%8apro-c-2008-and-net-3-5-platform%e3%80%8b</guid>
		<description><![CDATA[Linq章节写的非常清晰有条理，同时也对自己之前长期的理解偏差汗了一下。就在此备记一下： 1.Lambda表达式在预编译阶段就会变成泛型委托的一个匿名实体，这一点很重要，说明linq to sql并不是一撮而就直接翻译为TSQL查询的（虽然VS可以在断点模式直接为我们获取TSQL，至今我对VS依然是拜膜的心态），这也是实现查询参数《预编译linq查询》的基础 2.linq查询返回值并不是那些MSDN中的类型（如IQueryable），而是一类.NET系统级隐式类型，最常用的如where&#60;T&#62;返回的是一个叫做OrderedEnumerable的类，它可以隐式转换为各种可延迟执行查询的类型，如此设计是为了分离用户端（coder）与系统之间的需求耦合，在此又深刻感受到.NET平台优秀的层次设计。 3.因为查询结果的不确定性（可用静态方法封不同装数据源的相同查询逻辑），var是linq的重要组成部分，能大量简化代码，但在除linq以外的场合中原则上不应使用var，它毕竟违背强类型语言的本质。在这个问题上有过纠结，曾经看到实施ASP.NET MVC的团队为了更方便的分离view与control开发而在页面层大量使用var，事实虽然没有完全否定这种做法（项目最终实施的还算可以），但我依然坚持观念，看到本书作者与我一样的想法还是挺安慰的，现在坚定认为即使是编译时的类型推断依然违背强类型语言原则，语言的好坏更多地是看在人的眼里好不好而不是在机器的眼里好不好（执行速度相对比较低效的python获得如此成功不是没有道理），使用此类技术应该仅仅存在于领域语言（DSL，如linq），不适合大范围混搭使用。 4. 非泛型集合类因为没有实现IEnumerable&#60;T&#62;所以没有被扩展linq查询，但却扩展给了一个OffType&#60;T&#62;方法，可以直观地转换为泛型集合类，这也是之前没有料到的，在重构旧系统的时候这个方法应该很有用武之地。 5. linq核心方法Func最多支持16个独立数据源，虽然几乎不可能遇到此瓶颈（之前以为会以二叉树的形式支持无限地数据源）。 &#160; 耐心看书学习的过程很满足，很充实。如果有机会，很想对以前的自己多劝慰几句：“戒躁，戒躁 …” Filed under: Develop<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zicjin.wordpress.com&amp;blog=2119805&amp;post=471335&amp;subd=zicjin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><font face="微软雅黑">Linq章节写的非常清晰有条理，同时也对自己之前长期的理解偏差汗了一下。就在此备记一下：</font></p>
<p><font face="微软雅黑">1.Lambda表达式在预编译阶段就会变成泛型委托的一个匿名实体，这一点很重要，说明linq to sql并不是一撮而就直接翻译为TSQL查询的（虽然VS可以在断点模式直接为我们获取TSQL，至今我对VS依然是拜膜的心态），这也是实现查询参数《</font><a href="http://msdn.microsoft.com/zh-cn/magazine/ee336024.aspx"><font face="微软雅黑">预编译linq查询</font></a><font face="微软雅黑">》的基础</font></p>
<p><font face="微软雅黑">2.linq查询返回值并不是那些MSDN中的类型（如IQueryable），而是一类.NET系统级隐式类型，最常用的如where&lt;T&gt;返回的是一个叫做OrderedEnumerable的类，它可以隐式转换为各种可延迟执行查询的类型，如此设计是为了分离用户端（coder）与系统之间的需求耦合，在此又深刻感受到.NET平台优秀的层次设计。</font></p>
<p><font face="微软雅黑">3.因为查询结果的不确定性（可用静态方法封不同装数据源的相同查询逻辑），var是linq的重要组成部分，能大量简化代码，但在除linq以外的场合中原则上不应使用var，它毕竟违背强类型语言的本质。在这个问题上有过纠结，曾经看到实施ASP.NET MVC的团队为了更方便的分离view与control开发而在页面层大量使用var，事实虽然没有完全否定这种做法（项目最终实施的还算可以），但我依然坚持观念，看到本书作者与我一样的想法还是挺安慰的，现在坚定认为即使是编译时的类型推断依然违背强类型语言原则，语言的好坏更多地是看在人的眼里好不好而不是在机器的眼里好不好（执行速度相对比较低效的python获得如此成功不是没有道理），使用此类技术应该仅仅存在于领域语言（DSL，如linq），不适合大范围混搭使用。</font></p>
<p><font face="微软雅黑">4. 非泛型集合类因为没有实现IEnumerable&lt;T&gt;所以没有被扩展linq查询，但却扩展给了一个OffType&lt;T&gt;方法，可以直观地转换为泛型集合类，这也是之前没有料到的，在重构旧系统的时候这个方法应该很有用武之地。</font></p>
<p><font face="微软雅黑">5. linq核心方法Func最多支持16个独立数据源，虽然几乎不可能遇到此瓶颈（之前以为会以二叉树的形式支持无限地数据源）。</font></p>
<p><font face="微软雅黑"></font>&nbsp;</p>
<p><font face="微软雅黑">耐心看书学习的过程很满足，很充实。如果有机会，很想对以前的自己多劝慰几句：“戒躁，戒躁 …”</font></p>
<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8708641178240204865-2138266490022764277?l=zicj.blogspot.com' alt='' /></div>
<br />Filed under: <a href='http://zicjin.wordpress.com/category/develop/'>Develop</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zicjin.wordpress.com/471335/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zicjin.wordpress.com/471335/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zicjin.wordpress.com/471335/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zicjin.wordpress.com/471335/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/zicjin.wordpress.com/471335/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/zicjin.wordpress.com/471335/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/zicjin.wordpress.com/471335/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/zicjin.wordpress.com/471335/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zicjin.wordpress.com/471335/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zicjin.wordpress.com/471335/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zicjin.wordpress.com/471335/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zicjin.wordpress.com/471335/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zicjin.wordpress.com/471335/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zicjin.wordpress.com/471335/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zicjin.wordpress.com&amp;blog=2119805&amp;post=471335&amp;subd=zicjin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zicjin.wordpress.com/2011/03/03/%e7%bf%bb%e5%ae%8c%e3%80%8apro-c-2008-and-net-3-5-platform%e3%80%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fcb409c2a093880a048e41e8521cfa88?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">zicjin</media:title>
		</media:content>

		<media:content url="//blogger.googleusercontent.com/tracker/8708641178240204865-2138266490022764277?l=zicj.blogspot.com" medium="image" />
	</item>
		<item>
		<title>程序员需不需要SNS？</title>
		<link>http://zicjin.wordpress.com/2011/02/18/%e7%a8%8b%e5%ba%8f%e5%91%98%e9%9c%80%e4%b8%8d%e9%9c%80%e8%a6%81sns%ef%bc%9f/</link>
		<comments>http://zicjin.wordpress.com/2011/02/18/%e7%a8%8b%e5%ba%8f%e5%91%98%e9%9c%80%e4%b8%8d%e9%9c%80%e8%a6%81sns%ef%bc%9f/#comments</comments>
		<pubDate>Thu, 17 Feb 2011 21:25:00 +0000</pubDate>
		<dc:creator>Cheney Jin</dc:creator>
				<category><![CDATA[Analysis]]></category>

		<guid isPermaLink="false">http://zicjin.wordpress.com/2011/02/18/%e7%a8%8b%e5%ba%8f%e5%91%98%e9%9c%80%e4%b8%8d%e9%9c%80%e8%a6%81sns%ef%bc%9f</guid>
		<description><![CDATA[首先，这里讲的仅仅是是否“需要”，而不是可不可以，以娱乐消遣的心态上豆瓣、QQ空间当然是可以的。 因为今天整理自己浏览器书签的时候看到http://home.cnblogs.com一直放在显要的位置却很少被我访问，所以想起这个问题。 个人经验：在垃圾信息中过滤出有益信息所耗费的精力远远超出想象，所以现在很多公司流行让每个人研究一个课题后教其他人。效率确实很明显，不单是因为有人教，更重要的是在你遇到问题疑惑时（不管是理论还是应用层面）总有一个“专家”解答你。这位专家不一定足够正确，但他一定是足够高效、快速的。至于那些不怎么正确的东西，个人觉得不会是什么大问题，在应用到一定阶段早晚会被你纠正的。 由此我想说：请远离SNS，，， 好多年前，我第一次上CSDN的bbs时，着实被眼花缭乱地标题兴奋到了，我觉得我可以在这地方长期厮混下去。结果确是前前后后我总共发贴不超过10个，回帖没超过20个。 为什么？不是因为他们讨论的技术含量不高不好，只是因为因为太低效了。 这个现象，我觉得其他各类SNS、论坛同样存在。 程序员最好的学习来源应该是这样的（排行分先后）： 书、官方文档 身边的同事/朋友 同行博客，当然要做好筛选工作 还有：你自己。在准备上社区寻求帮助前，一定要先寻求自己的帮助 上社区、论坛寻求帮助，只是我迫不得已之举，多数还是因为一些非常诡异的设计、约定或bug所致。所以，还是写好自己的软件，让别人少受点苦吧。 Filed under: Analysis<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zicjin.wordpress.com&amp;blog=2119805&amp;post=471333&amp;subd=zicjin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>首先，这里讲的仅仅是是否“需要”，而不是可不可以，以娱乐消遣的心态上豆瓣、QQ空间当然是可以的。</p>
<p>因为今天整理自己浏览器书签的时候看到<a href="http://home.cnblogs.com">http://home.cnblogs.com</a>一直放在显要的位置却很少被我访问，所以想起这个问题。</p>
<p>个人经验：在垃圾信息中过滤出有益信息所耗费的精力远远超出想象，所以现在很多公司流行让每个人研究一个课题后教其他人。效率确实很明显，不单是因为有人教，更重要的是在你遇到问题疑惑时（不管是理论还是应用层面）总有一个“专家”解答你。这位专家不一定足够正确，但他一定是足够高效、快速的。至于那些不怎么正确的东西，个人觉得不会是什么大问题，在应用到一定阶段早晚会被你纠正的。</p>
<p>由此我想说：请远离SNS，，，</p>
<p>好多年前，我第一次上CSDN的bbs时，着实被眼花缭乱地标题兴奋到了，我觉得我可以在这地方长期厮混下去。结果确是前前后后我总共发贴不超过10个，回帖没超过20个。</p>
<p>为什么？不是因为他们讨论的技术含量不高不好，只是因为因为太低效了。</p>
<p>这个现象，我觉得其他各类SNS、论坛同样存在。</p>
<p>程序员最好的学习来源应该是这样的（排行分先后）：</p>
<p>书、官方文档</p>
<p>身边的同事/朋友</p>
<p>同行博客，当然要做好筛选工作</p>
<p>还有：你自己。在准备上社区寻求帮助前，一定要先寻求自己的帮助</p>
<p>上社区、论坛寻求帮助，只是我迫不得已之举，多数还是因为一些非常诡异的设计、约定或bug所致。所以，还是写好自己的软件，让别人少受点苦吧。</p>
<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8708641178240204865-1973407697696061144?l=zicj.blogspot.com' alt='' /></div>
<br />Filed under: <a href='http://zicjin.wordpress.com/category/analysis/'>Analysis</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zicjin.wordpress.com/471333/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zicjin.wordpress.com/471333/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zicjin.wordpress.com/471333/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zicjin.wordpress.com/471333/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/zicjin.wordpress.com/471333/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/zicjin.wordpress.com/471333/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/zicjin.wordpress.com/471333/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/zicjin.wordpress.com/471333/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zicjin.wordpress.com/471333/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zicjin.wordpress.com/471333/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zicjin.wordpress.com/471333/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zicjin.wordpress.com/471333/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zicjin.wordpress.com/471333/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zicjin.wordpress.com/471333/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zicjin.wordpress.com&amp;blog=2119805&amp;post=471333&amp;subd=zicjin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zicjin.wordpress.com/2011/02/18/%e7%a8%8b%e5%ba%8f%e5%91%98%e9%9c%80%e4%b8%8d%e9%9c%80%e8%a6%81sns%ef%bc%9f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fcb409c2a093880a048e41e8521cfa88?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">zicjin</media:title>
		</media:content>

		<media:content url="//blogger.googleusercontent.com/tracker/8708641178240204865-1973407697696061144?l=zicj.blogspot.com" medium="image" />
	</item>
		<item>
		<title>梦想是必需品还是奢侈品？</title>
		<link>http://zicjin.wordpress.com/2011/02/07/%e6%a2%a6%e6%83%b3%e6%98%af%e5%bf%85%e9%9c%80%e5%93%81%e8%bf%98%e6%98%af%e5%a5%a2%e4%be%88%e5%93%81%ef%bc%9f/</link>
		<comments>http://zicjin.wordpress.com/2011/02/07/%e6%a2%a6%e6%83%b3%e6%98%af%e5%bf%85%e9%9c%80%e5%93%81%e8%bf%98%e6%98%af%e5%a5%a2%e4%be%88%e5%93%81%ef%bc%9f/#comments</comments>
		<pubDate>Mon, 07 Feb 2011 00:00:00 +0000</pubDate>
		<dc:creator>Cheney Jin</dc:creator>
				<category><![CDATA[Analysis]]></category>

		<guid isPermaLink="false">http://zicjin.wordpress.com/2011/02/07/%e6%a2%a6%e6%83%b3%e6%98%af%e5%bf%85%e9%9c%80%e5%93%81%e8%bf%98%e6%98%af%e5%a5%a2%e4%be%88%e5%93%81%ef%bc%9f</guid>
		<description><![CDATA[在豆瓣上看到的 尊尼获加语路计划，支持一下吧。 其实，也是给自己打气。 我们一定要勇敢，这里的未来是属于我们的。 恰巧看到台湾大众银行今年的形象广告《梦骑士》： http://player.youku.com/player.php/sid/XMjQxMTUwNTI0/v.swf 因为梦想，才有活下去的理由，而且一定要好好地活下去，，， Filed under: Analysis<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zicjin.wordpress.com&amp;blog=2119805&amp;post=471332&amp;subd=zicjin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>在豆瓣上看到的 <a href="http://www.douban.com/minisite/yulujihua/">尊尼获加语路计划</a>，支持一下吧。</p>
<p>其实，也是给自己打气。</p>
<p>我们一定要勇敢，这里的未来是属于我们的。</p>
<p>恰巧看到台湾大众银行今年的形象广告《梦骑士》：</p>
<p><a href="http://player.youku.com/player.php/sid/XMjQxMTUwNTI0/v.swf">http://player.youku.com/player.php/sid/XMjQxMTUwNTI0/v.swf</a>
</p>
<p>因为梦想，才有活下去的理由，而且一定要好好地活下去，，，</p>
<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8708641178240204865-5628802660495895064?l=zicj.blogspot.com' alt='' /></div>
<br />Filed under: <a href='http://zicjin.wordpress.com/category/analysis/'>Analysis</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zicjin.wordpress.com/471332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zicjin.wordpress.com/471332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/zicjin.wordpress.com/471332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/zicjin.wordpress.com/471332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/zicjin.wordpress.com/471332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/zicjin.wordpress.com/471332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/zicjin.wordpress.com/471332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/zicjin.wordpress.com/471332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/zicjin.wordpress.com/471332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/zicjin.wordpress.com/471332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/zicjin.wordpress.com/471332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/zicjin.wordpress.com/471332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/zicjin.wordpress.com/471332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/zicjin.wordpress.com/471332/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zicjin.wordpress.com&amp;blog=2119805&amp;post=471332&amp;subd=zicjin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zicjin.wordpress.com/2011/02/07/%e6%a2%a6%e6%83%b3%e6%98%af%e5%bf%85%e9%9c%80%e5%93%81%e8%bf%98%e6%98%af%e5%a5%a2%e4%be%88%e5%93%81%ef%bc%9f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fcb409c2a093880a048e41e8521cfa88?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">zicjin</media:title>
		</media:content>

		<media:content url="//blogger.googleusercontent.com/tracker/8708641178240204865-5628802660495895064?l=zicj.blogspot.com" medium="image" />
	</item>
	</channel>
</rss>
