<?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/"
	>

<channel>
	<title>潘魏增 &#187; YUI</title>
	<atom:link href="http://panweizeng.com/archives/tag/yui/feed" rel="self" type="application/rss+xml" />
	<link>http://panweizeng.com</link>
	<description>活在回忆里,细数时间下过的蛋.</description>
	<lastBuildDate>Sun, 29 Aug 2010 17:03:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1-alpha</generator>
		<item>
		<title>YUI实现的Tab切换</title>
		<link>http://panweizeng.com/archives/489</link>
		<comments>http://panweizeng.com/archives/489#comments</comments>
		<pubDate>Sat, 14 Feb 2009 16:19:20 +0000</pubDate>
		<dc:creator>Pan</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[tab]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=489</guid>
		<description><![CDATA[YUI自带了一个TabView，虽然很简洁也很强大，但是常常不是想要的那种。Tab切换应该不依赖于HTML结构，能给设计人员和前端开发最大的灵活性。原理：一个tab对象分为控制部分(trigger)，内容部分(sheet)。当trigger被触发时，显示对应的sheet。 以前大树写过一个TabControl的代码，经过两年的使用依旧很考谱，说明当初这个思路还是比较符合实际需求的。我改成了基于YUI的版本，可能看起来更清晰一些。先访问测试页面查看效果，完整javascript代码在这里。 注意：改成实际代码时，请将Tab类放在某个命名空间下，不要直接暴露在全局空间中。 1：使用 以下是常用的html结构，但不限于此。 &#60;ul id=&#34;t&#34;&#62; &#160; &#160; &#160; &#160; &#60;li&#160;id=&#34;t1&#34;&#62;t1&#60;/li&#62; &#160; &#160; &#160; &#160; &#60;li&#160;id=&#34;t2&#34;&#62;t2&#60;/li&#62; &#160; &#160; &#160; &#160; &#60;li&#160;id=&#34;t3&#34;&#62;t3&#60;/li&#62; &#60;/ul&#62; &#60;div&#160;id=&#34;s&#34;&#62; &#160; &#160; &#160; &#160; &#60;div&#160;id=&#34;s1&#34;&#62;s1&#60;/div&#62; &#160; &#160; &#160; &#160; &#60;div&#160;id=&#34;s2&#34;&#62;s2&#60;/div&#62; &#160; &#160; &#160; &#160; &#60;div&#160;id=&#34;s3&#34;&#62;s3&#60;/div&#62; &#60;/div&#62; 对应的javascript代码如下，四种初始化方法都是可以的。 var tab = new Tab($D.get('t').getElementsByTagName('li'), $D.get('s').getElementsByTagName('div'));//1 var&#160;tab = new Tab(['t1','t2', 't3'],['s1','s2', 's3']);//2 var&#160;tab = [...]]]></description>
			<content:encoded><![CDATA[<p>YUI自带了一个<a href="http://developeryahoo.com/yui/tabview/">TabView</a>，虽然很简洁也很强大，但是常常不是想要的那种。Tab切换应该不依赖于HTML结构，能给设计人员和前端开发最大的灵活性。原理：一个tab对象分为控制部分(trigger)，内容部分(sheet)。当trigger被触发时，显示对应的sheet。</p>
<p>以前<a href="http://www.bigtreexu.com">大树</a>写过一个<a href="http://panweizeng.com/images/javascript/TabControl.1.0.U.js">TabControl</a>的代码，经过两年的使用依旧很考谱，说明当初这个思路还是比较符合实际需求的。我改成了基于YUI的版本，可能看起来更清晰一些。先访问<a href="http://panweizeng.com/images/javascript/tab-test.html">测试页面</a>查看效果，完整javascript代码在<a href="http://panweizeng.com/images/javascript/tab.js">这里</a>。</p>
<p>注意：改成实际代码时，请将Tab类放在某个命名空间下，不要直接暴露在全局空间中。</p>
<p>1：使用<br />
以下是常用的html结构，但不限于此。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Green;">ul</span><span style="color: Gray;"> </span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">t</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">li</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">t1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">t1</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">li</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">li</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">t2</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">t2</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">li</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">li</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">t3</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">t3</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">li</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">ul</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">div</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">s</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">div</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">s1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">s1</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">div</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">div</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">s2</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">s2</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">div</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">div</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">s3</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">s3</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">div</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">div</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p>对应的javascript代码如下，四种初始化方法都是可以的。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">tab</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">Tab</span><span style="color: Olive;">(</span><span style="color: Gray;">$</span><span style="color: Blue;">D</span><span style="color: Gray;">.</span><span style="color: Blue;">get</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">t</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">getElementsByTagName</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">li</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">, $</span><span style="color: Blue;">D</span><span style="color: Gray;">.</span><span style="color: Blue;">get</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">s</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">getElementsByTagName</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">div</span><span style="color: #8b0000;">'</span><span style="color: Olive;">))</span><span style="color: Gray;">;</span><span style="color: #ffa500;">//1</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">tab</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">Tab</span><span style="color: Olive;">([</span><span style="color: #8b0000;">'</span><span style="color: Red;">t1</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">t2</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">t3</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">,</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">s1</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">s2</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">s3</span><span style="color: #8b0000;">'</span><span style="color: Olive;">])</span><span style="color: Gray;">;</span><span style="color: #ffa500;">//2</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">tab</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">Tab</span><span style="color: Olive;">([</span><span style="color: #8b0000;">'</span><span style="color: Red;">t1</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">t2</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">t3</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">,</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">s1</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">s2</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">s3</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">,</span><span style="color: Olive;">{</span><span style="color: Gray;"> </span><span style="color: Blue;">triggerEvent</span><span style="color: Gray;">:</span><span style="color: #8b0000;">'</span><span style="color: Red;">mouseover</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: Blue;">slideEnabled</span><span style="color: Gray;">:</span><span style="color: Green;">true</span><span style="color: Olive;">})</span><span style="color: Gray;">;</span><span style="color: #ffa500;">//3</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">tab</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">Tab</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span><span style="color: #ffa500;">//4</span></li>
<li><span style="color: Blue;">tab</span><span style="color: Gray;">.</span><span style="color: Blue;">add</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">t1</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">s1</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">tab</span><span style="color: Gray;">.</span><span style="color: Blue;">add</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">t2</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">s2</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span></li>
<li><span style="color: Blue;">tab</span><span style="color: Gray;">.</span><span style="color: Blue;">add</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">t3</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">s3</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span></li>
<li><span style="color: Blue;">tab</span><span style="color: Gray;">.</span><span style="color: Blue;">config</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">triggerEvent</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">mouseover</span><span style="color: #8b0000;">'</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">tab</span><span style="color: Gray;">.</span><span style="color: Blue;">config</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">slideEnabled</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Green;">true</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">tab</span><span style="color: Gray;">.</span><span style="color: Blue;">onShow</span><span style="color: Gray;">.</span><span style="color: Blue;">subscribe</span><span style="color: Olive;">(</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">t</span><span style="color: Gray;">, </span><span style="color: Blue;">a</span><span style="color: Olive;">){</span><span style="color: Gray;"> ... </span><span style="color: Olive;">})</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">tab</span><span style="color: Gray;">.</span><span style="color: Blue;">init</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li></ol></div>
<p>2：扩展<br />
已经实现自动切换功能(默认关闭)，另外可以通过onShow自定义事件扩展，也可以在原代码基础上添加更多的自定义事件。</p>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/archives/489/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>基于YUI的封装开发</title>
		<link>http://panweizeng.com/archives/337</link>
		<comments>http://panweizeng.com/archives/337#comments</comments>
		<pubDate>Tue, 03 Feb 2009 15:32:47 +0000</pubDate>
		<dc:creator>Pan</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=337</guid>
		<description><![CDATA[这是去年我在一次公司内部讨论会上的交流主题，相关ppt和样例代码在这里下载。 YUI是Yahoo的前端开发框架，它的优点是代码清晰（尽管代码量不小），面向对象和组件，便于协同开发。另外，Yahoo对web开发社区的贡献一直都很积极。 在YUI上扩展开发，一般会采用两种方式，基于对象（object）和基于原型（prototype）。 1. 基于对象（object） 形如singleton单件模式，保证命名空间整洁，方便管理代码。 HN.app.Book =&#160; { &#160; &#160; dialog:new&#160;HN.widget.Dialog(), &#160; &#160; getDialog:function(){ &#160; &#160; &#160; &#160; return&#160;this.dialog; &#160; &#160; }, &#160; &#160; paging:function(){......} } 实例 /** * @fileOverview 书架(book) app */ &#160; HN.namespace('app.Book'); &#160; HN.app.Book = (function(){ //YAHOO alias section var $C = YAHOO.util.Connect, &#160; &#160; $D = YAHOO.util.Dom, &#160; &#160; $E [...]]]></description>
			<content:encoded><![CDATA[<p>这是去年我在一次公司内部讨论会上的交流主题，相关ppt和样例代码<a href="http://panweizeng.com/download/yui-develop.zip">在这里下载</a>。</p>
<p><a href="http://developer.yahoo.com/yui/">YUI</a>是Yahoo的前端开发框架，它的优点是代码清晰（尽管代码量不小），面向对象和组件，便于协同开发。另外，Yahoo对web开发社区的贡献一直都很积极。</p>
<p>在YUI上扩展开发，一般会采用两种方式，基于对象（object）和基于原型（prototype）。</p>
<p><span id="more-337"></span></p>
<p>1. 基于对象（object）<br />
形如<a href="http://en.wikipedia.org/wiki/Singleton_pattern">singleton单件模式</a>，保证命名空间整洁，方便管理代码。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">HN</span><span style="color: Gray;">.</span><span style="color: Blue;">app</span><span style="color: Gray;">.</span><span style="color: Blue;">Book</span><span style="color: Gray;"> =&nbsp; </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">dialog</span><span style="color: Gray;">:</span><span style="color: Green;">new</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">HN</span><span style="color: Gray;">.</span><span style="color: Blue;">widget</span><span style="color: Gray;">.</span><span style="color: Blue;">Dialog</span><span style="color: Olive;">()</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">getDialog</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">dialog</span><span style="color: Gray;">; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">paging</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span><span style="color: Gray;">......</span><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>实例</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #ffa500;">/**</span></li>
<li><span style="color: #ffa500;"> * @fileOverview 书架(book) app</span></li>
<li><span style="color: #ffa500;"> */</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">HN</span><span style="color: Gray;">.</span><span style="color: Blue;">namespace</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">app.Book</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">HN</span><span style="color: Gray;">.</span><span style="color: Blue;">app</span><span style="color: Gray;">.</span><span style="color: Blue;">Book</span><span style="color: Gray;"> = </span><span style="color: Olive;">(</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span></li>
<li><span style="color: #ffa500;">//YAHOO alias section</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;"> $</span><span style="color: Blue;">C</span><span style="color: Gray;"> = </span><span style="color: Blue;">YAHOO</span><span style="color: Gray;">.</span><span style="color: Blue;">util</span><span style="color: Gray;">.</span><span style="color: Blue;">Connect</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; $</span><span style="color: Blue;">D</span><span style="color: Gray;"> = </span><span style="color: Blue;">YAHOO</span><span style="color: Gray;">.</span><span style="color: Blue;">util</span><span style="color: Gray;">.</span><span style="color: Blue;">Dom</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; $</span><span style="color: Blue;">E</span><span style="color: Gray;"> = </span><span style="color: Blue;">YAHOO</span><span style="color: Gray;">.</span><span style="color: Blue;">util</span><span style="color: Gray;">.</span><span style="color: Blue;">Event</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; $</span><span style="color: Blue;">CE</span><span style="color: Gray;"> = </span><span style="color: Blue;">YAHOO</span><span style="color: Gray;">.</span><span style="color: Blue;">util</span><span style="color: Gray;">.</span><span style="color: Blue;">CustomEvent</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">dialogId</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">abc</span><span style="color: #8b0000;">'</span><span style="color: Gray;">;</span><span style="color: #ffa500;">//private variable</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">function</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">getBook</span><span style="color: Olive;">(</span><span style="color: Blue;">id</span><span style="color: Olive;">){</span><span style="color: Gray;">...</span><span style="color: Olive;">}</span><span style="color: #ffa500;">//private method</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">dialog</span><span style="color: Gray;">:</span><span style="color: Green;">null</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">getDialog</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">dg</span><span style="color: Gray;"> = </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">dialog</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Gray;">!</span><span style="color: Blue;">dg</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">dg</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">HN</span><span style="color: Gray;">.</span><span style="color: Blue;">widget</span><span style="color: Gray;">.</span><span style="color: Blue;">Dialog</span><span style="color: Olive;">({</span><span style="color: Blue;">id</span><span style="color: Gray;">: </span><span style="color: Blue;">dialogId</span><span style="color: Olive;">})</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">dialog</span><span style="color: Gray;"> = </span><span style="color: Blue;">dg</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">dg</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">getComment</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">bookId</span><span style="color: Gray;">,</span><span style="color: Blue;">callback</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">dg</span><span style="color: Gray;"> = </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">getDialog</span><span style="color: Olive;">()</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">bookItem</span><span style="color: Gray;"> = </span><span style="color: Blue;">getBook</span><span style="color: Olive;">(</span><span style="color: Blue;">bookId</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: #ffa500;">//return ends here</span></li>
<li><span style="color: Olive;">})()</span><span style="color: Gray;">;</span></li></ol></div>
<p>2. 基于原型（prototype）<br />
灵活度高，适合编写通用组件。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">HN</span><span style="color: Gray;">.</span><span style="color: Blue;">widget</span><span style="color: Gray;">.</span><span style="color: Blue;">Dialog</span><span style="color: Gray;"> = </span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">config</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">config</span><span style="color: Gray;"> &amp;&amp; </span><span style="color: Blue;">config</span><span style="color: Gray;">.</span><span style="color: Blue;">id</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">id</span><span style="color: Gray;"> = </span><span style="color: Blue;">config</span><span style="color: Gray;">.</span><span style="color: Blue;">id</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Blue;">HN</span><span style="color: Gray;">.</span><span style="color: Blue;">widget</span><span style="color: Gray;">.</span><span style="color: Blue;">Dialog</span><span style="color: Gray;">.</span><span style="color: Blue;">prototype</span><span style="color: Gray;"> = </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">setBody</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">html</span><span style="color: Olive;">){</span><span style="color: Gray;">…</span><span style="color: Olive;">}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">show</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span><span style="color: Gray;">…</span><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>实例</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #ffa500;">/**</span></li>
<li><span style="color: #ffa500;"> * @fileOverview 评星级(Rating) widget </span></li>
<li><span style="color: #ffa500;"> */</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">HN</span><span style="color: Gray;">.</span><span style="color: Blue;">namespace</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">widget.Rating</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Olive;">(</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//YAHOO alias section</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;"> $</span><span style="color: Blue;">C</span><span style="color: Gray;"> = </span><span style="color: Blue;">YAHOO</span><span style="color: Gray;">.</span><span style="color: Blue;">util</span><span style="color: Gray;">.</span><span style="color: Blue;">Connect</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; $</span><span style="color: Blue;">D</span><span style="color: Gray;"> = </span><span style="color: Blue;">YAHOO</span><span style="color: Gray;">.</span><span style="color: Blue;">util</span><span style="color: Gray;">.</span><span style="color: Blue;">Dom</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; $</span><span style="color: Blue;">E</span><span style="color: Gray;"> = </span><span style="color: Blue;">YAHOO</span><span style="color: Gray;">.</span><span style="color: Blue;">util</span><span style="color: Gray;">.</span><span style="color: Blue;">Event</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; $</span><span style="color: Blue;">CE</span><span style="color: Gray;"> = </span><span style="color: Blue;">YAHOO</span><span style="color: Gray;">.</span><span style="color: Blue;">util</span><span style="color: Gray;">.</span><span style="color: Blue;">CustomEvent</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">counter</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span><span style="color: #ffa500;">//private variable</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">function</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">find</span><span style="color: Olive;">(</span><span style="color: Blue;">key</span><span style="color: Gray;">,</span><span style="color: Blue;">arr</span><span style="color: Olive;">){</span><span style="color: Gray;">...</span><span style="color: Olive;">}</span><span style="color: Gray;"> </span><span style="color: #ffa500;">//private method</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">HN</span><span style="color: Gray;">.</span><span style="color: Blue;">widget</span><span style="color: Gray;">.</span><span style="color: Blue;">Rating</span><span style="color: Gray;"> = </span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">el</span><span style="color: Gray;">,</span><span style="color: Blue;">config</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">isInProgress</span><span style="color: Gray;"> = </span><span style="color: Green;">false</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">setConfig</span><span style="color: Olive;">(</span><span style="color: Blue;">config</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">onComplete</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> $</span><span style="color: Blue;">CE</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">onComplete</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: Green;">this</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">init</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">HN</span><span style="color: Gray;">.</span><span style="color: Blue;">widget</span><span style="color: Gray;">.</span><span style="color: Blue;">Rating</span><span style="color: Gray;">.</span><span style="color: Blue;">prototype</span><span style="color: Gray;"> = </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">setConfig</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">config</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Gray;">!</span><span style="color: Blue;">config</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">for</span><span style="color: Olive;">(</span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">attr</span><span style="color: Gray;"> </span><span style="color: Green;">in</span><span style="color: Gray;"> </span><span style="color: Blue;">config</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">config</span><span style="color: Olive;">[</span><span style="color: Blue;">attr</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Blue;">config</span><span style="color: Olive;">[</span><span style="color: Blue;">attr</span><span style="color: Olive;">]</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">setState</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span><span style="color: Gray;">...</span><span style="color: Olive;">}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">post</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">id</span><span style="color: Olive;">){</span><span style="color: Gray;">...</span><span style="color: Olive;">}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">init</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span><span style="color: Gray;">...</span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: #ffa500;">//prototype ends here</span></li>
<li><span style="color: Olive;">})()</span><span style="color: Gray;">;</span></li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/archives/337/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
