﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-无羽苍鹰-随笔分类-Prototype学习志</title><link>http://www.blogjava.net/sonnylys/category/31318.html</link><description>熟能生巧，巧夺天工！</description><language>zh-cn</language><lastBuildDate>Fri, 09 May 2008 18:37:57 GMT</lastBuildDate><pubDate>Fri, 09 May 2008 18:37:57 GMT</pubDate><ttl>60</ttl><item><title>Prototype学习志 之 bind方法的“谜”迷人色彩！</title><link>http://www.blogjava.net/sonnylys/archive/2008/05/08/199080.html</link><dc:creator>无羽苍鹰</dc:creator><author>无羽苍鹰</author><pubDate>Thu, 08 May 2008 14:37:00 GMT</pubDate><guid>http://www.blogjava.net/sonnylys/archive/2008/05/08/199080.html</guid><wfw:comment>http://www.blogjava.net/sonnylys/comments/199080.html</wfw:comment><comments>http://www.blogjava.net/sonnylys/archive/2008/05/08/199080.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/sonnylys/comments/commentRss/199080.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sonnylys/services/trackbacks/199080.html</trackback:ping><description><![CDATA[<p><span style="color: red">&nbsp;&nbsp;</span>&nbsp;&nbsp;&nbsp;Prototype的bind方法常常把许多学习它的人弄得糊糊涂涂，google和baidu一番后还是一塌胡涂！本人也如此；本人觉得它是个从&#8220;谜人&#8221;到&#8220;迷人&#8221;的方法。此文将发表个人对此方法的理解，希望能帮助大家成功渡&#8220;谜&#8221;，到达&#8220;迷人&#8221;的彼岸！<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&nbsp;&lt;script src="prototype.js"&gt;&lt;/script&gt; //@7<br />
&nbsp;&lt;script type="text/javascript"&gt;<br />
&nbsp;&nbsp; /**********************************<br />
&nbsp;&nbsp;&nbsp; *<br />
&nbsp;&nbsp;&nbsp; *&nbsp; 实现渲染一个带有"上一页"和"下一页"的组件,点击"上一页",当前页减1,点击"下一页"当前页加1<br />
&nbsp;&nbsp;&nbsp; *<br />
&nbsp;&nbsp;&nbsp; */<br />
&nbsp;&nbsp; function PagesSystem(container){<br />
&nbsp;&nbsp;&nbsp;&nbsp; this.currentPage = 10; //当前页<br />
&nbsp;&nbsp;&nbsp;&nbsp; this.pageSysDiv = document.getElementById(container); //容器<br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; this.init = function() { //将组件画出来<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.createPrePage();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.createNextPage();<br />
&nbsp;&nbsp;&nbsp;&nbsp; };<br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; this.changePage = function(evtObj) { //根据点击后传过来的参数决定是加1或是减1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(evtObj == "next") {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.currentPage += 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("你已执行将当前页加1，现在当前页是：" + this.currentPage);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else if(evtObj == "pre"){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //此处不作if(this.currentPage ==1) return;限制为了体现当传入的参数为"pre"时，下面的alert()一定会执行<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.currentPage -= 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("你已执行将当前页减1，现在当前页是：" + this.currentPage);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; };<br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; this.createPrePage = function() {//创建上一页组件<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var _span = document.createElement("SPAN");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _span.style.cssText = "margin-left:16px";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var _a = document.createElement("A");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _a.href = "#";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _a.onclick = this.changePage; //@1 当点击此（"上一页"）铵钮时执行<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _a.innerText = "上一页";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _span.appendChild(_a);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.pageSysDiv.appendChild(_span);<br />
&nbsp;&nbsp;&nbsp;&nbsp; };<br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; this.createNextPage = function() {//创建下一页组件<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var _span = document.createElement("SPAN");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _span.style.cssText = "margin-left:16px";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var _a = document.createElement("A");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _a.href = "#";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _a.onclick = this.changePage; //@2 当点击此（"下一页"）铵钮时执行<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _a.innerText = "下一页";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _span.appendChild(_a);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.pageSysDiv.appendChild(_span);<br />
&nbsp;&nbsp;&nbsp;&nbsp; };<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; this.init(); //执行初始化<br />
&nbsp;&nbsp; } <br />
&nbsp;&nbsp; function testUse(msg){//@3在提出问题环节用到<br />
&nbsp;&nbsp;&nbsp;&nbsp; alert(msg);<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; window.onload = function() {<br />
&nbsp;&nbsp;&nbsp;&nbsp; var ps = new PagesSystem("pageDiv");<br />
&nbsp;&nbsp; }<br />
&nbsp;&lt;/script&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&nbsp; &lt;div id="pageDiv"&gt;&lt;/div&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p>
<p>二、分析代码，提出问题，解决问题<br />
1、无法传递参数问题。<br />
&nbsp;&nbsp; 你细看@1和@2处,当前的代码实现是无法把"pre"和"next"参数传递过去，于是，当你运行例子，点击上一页或下一页，都是没信息alert出来的！<br />
&nbsp;&nbsp; 这种情况，是很常见的。那么，如何实现将参数传过去。<br />
&nbsp;&nbsp; 将@1处代码修改如下：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _a.onclick = function(){ //@1 当点击此（"上一页"）铵钮时执行<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; testUse("pre"); //参看@3<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.changePage("pre");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp; 这样创建一个匿名函数赋予_a.onclick,也就是当_a对象的onclick事件触发后将执行此匿名函数，而匿名函数将帮忙调用testUse("pre")和this.changePage("pre")两个方法，<br />
&nbsp;&nbsp; 从而达成传递参数。<br />
&nbsp;&nbsp; 修改代码，运行例子后点击上一页后会显示如下两个信息，一个是testUse中输出的信息，证明了实现参数传递，另一个却是运行错误提示。<br />
&nbsp;&nbsp;&nbsp;<img height="390" alt="" src="http://www.blogjava.net/images/blogjava_net/sonnylys/2008_05/bind.jpg" width="514" border="0" /><br />
<br />
&nbsp;&nbsp; 这是执行this.changePage("pre")方法抛出来的。它并没像我们预期想的运行。<br />
&nbsp;&nbsp; 从提示获到的信息是，对象不支持此属性或方法（如果浏览器报的是中文提示就可以看到&#8220;对象不支持此方法或属性&#8221;的提示）<br />
&nbsp;&nbsp; 回头看this.changePage("pre")方法，很明显this是错误提示中所指的对象，在本应用中指PagesSystem对象指针的引用，在应用中确实是声明了this.changePage("pre")方法，但为什么说没此方法呢？？？？<br />
2、在问题1中，我们已成功解决传递参数，但PagesSystem对象的changePage方法被谁偷了？？？<br />
&nbsp;&nbsp; 再将刚才的代码修改如:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _a.onclick = function(){ //@1 当点击此（"上一页"）铵钮时执行<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; testUse("pre"); //参看@3<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(this.tagName);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.changePage("pre");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp; 再运行例子，你会发现输出this.tagName的值为 A, 它就是_a对象。噢，我的天啊。怎么会这样？？？<br />
&nbsp;&nbsp; 哈哈..._a对象就是&lt;a href=""/&gt;&lt;/a&gt;这个html 元素对象，这里是&#8220;上一页&#8221;铵钮对象，原型中哪来changePage方法啊，所以报错！！！<br />
&nbsp;&nbsp; 你可以这样理解，看如下代码:<br />
&nbsp;&nbsp;&nbsp;&nbsp; function PagesSystem(container){//此应用中的PagesSystem对象，changePage方法的上下文对象,也可以称为归属者。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //...省略其它代码<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.changePage = function(evtObj) { //根据点击后传过来的参数决定是加1或是减1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(evtObj == "next") {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.currentPage += 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("你已执行将当前页加1，现在当前页是：" + this.currentPage);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else if(evtObj == "pre"){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //此处不作if(this.currentPage ==1) return;限制为了体现当传入的参数为"pre"时，下面的alert()一定会执行<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.currentPage -= 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("你已执行将当前页减1，现在当前页是：" + this.currentPage);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //...省略其它代码<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; 这样的代码，你很容易看出this是指PagesSystem, 那么我们继续往下看<br />
&nbsp;&nbsp;&nbsp;&nbsp; 假设 A对象的原型如下:<br />
&nbsp;&nbsp;&nbsp;&nbsp; function A() {//@4<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //...<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.onclick;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.doClick = function() { //点击<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.onclick();//执行<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //...<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; 当你在PagesSystem方法中<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _a.onclick = function(){ //@1 当点击此（"上一页"）铵钮时执行<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; testUse("pre"); //参看@3<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(this.tagName);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.changePage("pre");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; 写上这样的代码后,你可以离谱认为@4的代码的模样是如下：<br />
&nbsp;&nbsp;&nbsp; function A() {//@4<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //...<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.onclick = function(){ //@1 当点击此（"上一页"）铵钮时执行<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; testUse("pre"); //参看@3<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(this.tagName); //@5<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.changePage("pre"); //@6<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.doClick = function() { //点击<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.onclick();//执行<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //...<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; 呵呵。。如果这样看的话，@5,@6中的this当然是指a对象，没异义。那当然是没changePage方法。<br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
3、那么如何解决这问题呢？？<br />
&nbsp;&nbsp; 很幸运，prototype.js中的bind方法就可以解决这样的问题，它还解决我们上面提的传参数问题。<br />
&nbsp;&nbsp; 看bind大侠帅样:<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; bind: function() {<br />
&nbsp;&nbsp;&nbsp; if (arguments.length &lt; 2 &amp;&amp; Object.isUndefined(arguments[0])) return this;<br />
&nbsp;&nbsp;&nbsp; var __method = this, args = $A(arguments), object = args.shift();<br />
&nbsp;&nbsp;&nbsp; return function() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return __method.apply(object, args.concat($A(arguments)));<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp; }<br />
&nbsp; bind方法中的this就是bind方法的所属者（上下文）如: f.bind(),f是一个声明了的方法,那么bind 方法里的this就是f<br />
&nbsp; 再细看，bind方法其实做的工作是返回一个匿名函数,此匿名函数帮忙执行this所指的方法（bind方法的所属者），如果你有如下代码<br />
&nbsp; function f(msg) {<br />
&nbsp;&nbsp;&nbsp; this.functionName = "f method";<br />
&nbsp;&nbsp;&nbsp; alert(msg);<br />
&nbsp;&nbsp;&nbsp; alert(this.functionName);<br />
&nbsp; }<br />
&nbsp; <br />
&nbsp; button.onclick = f.bind(this, msg); //这里的this指f, 在bind方法中用object = args.shift()获得，这样的话，当点击button后执行f方法, f方法中的this就不会无故被 button代替。^_^不然，会报错的啊，button哪来functionName，呵呵...<br />
&nbsp; 它既解决将msg参数传过去，同时将f绑定到button环境下，bind方法得名可能就是这意义吧。至于如何实现将f绑定，靠的就是apply方法。<br />
&nbsp; apply谜人色彩就由你们自行去揭开啦！<br />
&nbsp; 介绍了bind大侠给大家，我的例子就麻烦你们自己调通它啦。谢了。。<br />
&nbsp;&nbsp;<br />
&nbsp; 欢迎交流指正。<br />
<br />
&nbsp;<span style="color: red">备注：&nbsp;如需转载本文，请注明出处</span><br />
&nbsp;&nbsp;&nbsp;&nbsp; </p>
<img src ="http://www.blogjava.net/sonnylys/aggbug/199080.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sonnylys/" target="_blank">无羽苍鹰</a> 2008-05-08 22:37 <a href="http://www.blogjava.net/sonnylys/archive/2008/05/08/199080.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>