﻿<?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-zhuyongjp-随笔分类-javaScript</title><link>http://www.blogjava.net/zhuyongjp/category/40702.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 22 Jul 2009 09:37:11 GMT</lastBuildDate><pubDate>Wed, 22 Jul 2009 09:37:11 GMT</pubDate><ttl>60</ttl><item><title>javascript 创建DOM节点</title><link>http://www.blogjava.net/zhuyongjp/archive/2009/07/22/287859.html</link><dc:creator>zhuyongjp</dc:creator><author>zhuyongjp</author><pubDate>Wed, 22 Jul 2009 07:27:00 GMT</pubDate><guid>http://www.blogjava.net/zhuyongjp/archive/2009/07/22/287859.html</guid><wfw:comment>http://www.blogjava.net/zhuyongjp/comments/287859.html</wfw:comment><comments>http://www.blogjava.net/zhuyongjp/archive/2009/07/22/287859.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhuyongjp/comments/commentRss/287859.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhuyongjp/services/trackbacks/287859.html</trackback:ping><description><![CDATA[
		<div id="art" style="MARGIN: 15px" width="100%">javascript 如何创建一个 DOM 节点？<br /><br /><br /><br /><br /><br />key<br />-------------------------------------------<br />1、a.创建一个Element             var newDiv = document.createElement("div");<br />   b.设置它的属性                newDiv.id = "divNew";<br />       c.如果需要，创建子节点      var newTable = document.createElement("table");<br />       d.设置子节点属性           newTable.setAttribute("id","tableNew");<br />       e.重复步骤c和d,直到完成整个目录树<br />       f.创建Text节点            var newText = document.createTextNode("string");<br />  g.从叶子节点往上appendChild     newDiv.appendChild(newTable);<br />                                document.body.appendChild(newDiv);<br /><br />另一种方式 <br />    a.创建一个Element            var newDiv = document.createElement("div");<br />    b.用 innerHTML                                newDiv.innerHTML="&lt;table&gt;&lt;tr&gt;&lt;th&gt;type&lt;/th&gt;&lt;th&gt;value&lt;/th&gt;&lt;/tr&gt;&lt;/table&gt;";<br /></div>
<img src ="http://www.blogjava.net/zhuyongjp/aggbug/287859.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhuyongjp/" target="_blank">zhuyongjp</a> 2009-07-22 15:27 <a href="http://www.blogjava.net/zhuyongjp/archive/2009/07/22/287859.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>领悟 JavaScript 中的面向对象</title><link>http://www.blogjava.net/zhuyongjp/archive/2009/07/17/287180.html</link><dc:creator>zhuyongjp</dc:creator><author>zhuyongjp</author><pubDate>Fri, 17 Jul 2009 08:03:00 GMT</pubDate><guid>http://www.blogjava.net/zhuyongjp/archive/2009/07/17/287180.html</guid><wfw:comment>http://www.blogjava.net/zhuyongjp/comments/287180.html</wfw:comment><comments>http://www.blogjava.net/zhuyongjp/archive/2009/07/17/287180.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhuyongjp/comments/commentRss/287180.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhuyongjp/services/trackbacks/287180.html</trackback:ping><description><![CDATA[
		<p>领悟 JavaScript 中的面向对象</p>
		<p>
				<br />JavaScript 是面向对象的。但是不少人对这一点理解得并不全面。<br /><br />在 JavaScript 中，对象分为两种。一种可以称为“普通对象”，就是我们所普遍理解的那些：数字、日期、用户自定义的对象（如：{}）等等。<br /><br />还有一种，称为“方法对象”，就是我们通常定义的 function。你可能觉得奇怪：方法就是方法，怎么成了对象了？但是在 JavaScript 中，方法的确是被当成对象来处理的。下面是一个简单的例子：<br /></p>
		<div class="dp-highlighter">
				<div class="bar">
						<div class="tools">Js代码 </div>
				</div>
				<ol class="dp-c">
						<li>
								<span>
										<span class="keyword">
												<strong>
														<font color="#7f0055">function</font>
												</strong>
										</span>
										<span> func() {alert(</span>
										<span class="string">
												<font color="#0000ff">'Hello!'</font>
										</span>
										<span>);}   </span>
								</span>
						</li>
						<li>
								<span>alert(func.toString());  </span>
						</li>
				</ol>
		</div>
		<pre class="js" style="DISPLAY: none" name="code">function func() {alert('Hello!');}
alert(func.toString());</pre>
		<br />在这个例子中，func 虽然是作为一个方法定义的，但它自身却包含一个 toString 方法，说明 func 在这里是被当成一个对象来处理的。更准确的说，func 是一个“方法对象”。下面是例子的继续：<br /><br /><div class="dp-highlighter"><div class="bar"><div class="tools">Js代码 </div></div><ol class="dp-c"><li><span><span>func.name = “I am func.”;   </span></span></li><li><span>alert(func.name);  </span></li></ol></div><pre class="js" style="DISPLAY: none" name="code">func.name = “I am func.”;
alert(func.name);</pre><br />我们可以任意的为 func 设置属性，这更加证明了 func 就是一个对象。那么方法对象和普通对象的区别在哪里呢？首先方法对象当然是可以执行的，在它后面加上一对括号，就是执行这个方法对象了。<br /><br /><div class="dp-highlighter"><div class="bar"><div class="tools">Js代码 </div></div><ol class="dp-c"><li><span><span>func();  </span></span></li></ol></div><pre class="js" style="DISPLAY: none" name="code">func();</pre><br />所以，方法对象具有二重性。一方面它可以被执行，另一方面它完全可以被当成一个普通对象来使用。这意味着什么呢？这意味着方法对象是可以完全独立于其他对象存在的。这一点我们可以同 Java 比较一下。在 Java 中，方法必须在某一个类中定义，而不能单独存在。而 JavaScript 中就不需要。<br /><br />方法对象独立于其他方法，就意味着它能够被任意的引用和传递。下面是一个例子：<br /><br /><div class="dp-highlighter"><div class="bar"><div class="tools">Js代码 </div></div><ol class="dp-c"><li><span><span class="keyword"><strong><font color="#7f0055">function</font></strong></span><span> invoke(f) {   </span></span></li><li><span>    f();   </span></li><li><span>}   </span></li><li><span>invoke(func);  </span></li></ol></div><pre class="js" style="DISPLAY: none" name="code">function invoke(f) {
    f();
}
invoke(func);</pre><br />将一个方法对象 func 传递给另一个方法对象 invoke，让后者在适当的时候执行 func。这就是所谓的“回调”了。另外，方法对象的这种特殊性，也使得 this 关键字不容易把握。这方面相关文章不少，这里不赘述了。<br /><br />除了可以被执行以外，方法对象还有一个特殊的功用，就是它可以通过 new 关键字来创建普通对象。<br /><br />话说每一个方法对象被创建时，都会自动的拥有一个叫 prototype 的属性。这个属性并无什么特别之处，它和其他的属性一样可以访问，可以赋值。不过当我们用 new 关键字来创建一个对象的时候，prototype 就起作用了：它的值（也是一个对象）所包含的所有属性，都会被复制到新创建的那个对象上去。下面是一个例子：<br /><br /><div class="dp-highlighter"><div class="bar"><div class="tools">Js代码 </div></div><ol class="dp-c"><li><span><span>func.prototype.name=”prototype of func”;   </span></span></li><li><span></span><span class="keyword"><strong><font color="#7f0055">var</font></strong></span><span> f = </span><span class="keyword"><strong><font color="#7f0055">new</font></strong></span><span> func();   </span></li><li><span>alert(f.name);  </span></li></ol></div><pre class="js" style="DISPLAY: none" name="code">func.prototype.name=”prototype of func”;
var f = new func();
alert(f.name);</pre><br />执行的过程中会弹出两个对话框，后一个对话框表示 f 这个新建的对象从 func.prototype 那里拷贝了 name 属性。而前一个对话框则表示 func 被作为方法执行了一遍。你可能会问了，为什么这个时候要还把 func 执行一遍呢？其实这个时候执行 func，就是起“构造函数”的作用。为了形象的说明，我们重新来一遍：<br /><br /><div class="dp-highlighter"><div class="bar"><div class="tools">Js代码 </div></div><ol class="dp-c"><li><span><span class="keyword"><strong><font color="#7f0055">function</font></strong></span><span> func() {   </span></span></li><li><span>    </span><span class="keyword"><strong><font color="#7f0055">this</font></strong></span><span>.name=”name has been changed.”   </span></li><li><span>}   </span></li><li><span>func.prototype.name=”prototype of func”;   </span></li><li><span></span><span class="keyword"><strong><font color="#7f0055">var</font></strong></span><span> f = </span><span class="keyword"><strong><font color="#7f0055">new</font></strong></span><span> func();   </span></li><li><span>alert(f.name);  </span></li></ol></div><pre class="js" style="DISPLAY: none" name="code">function func() {
    this.name=”name has been changed.”
}
func.prototype.name=”prototype of func”;
var f = new func();
alert(f.name);</pre><br />你就会发现 f 的 name 属性不再是"prototype of func"，而是被替换成了"name has been changed"。这就是 func 这个对象方法所起到的“构造函数”的作用。所以，在 JavaScript 中，用 new 关键字创建对象是执行了下面三个步骤的：<br /><ol><li>创建一个新的普通对象； 
</li><li>将方法对象的 prototype 属性的所有属性复制到新的普通对象中去。 
</li><li>以新的普通对象作为上下文来执行方法对象。</li></ol><p>对于“new func()”这样的语句，可以描述为“从 func 创建一个新对象”。总之，prototype 这个属性的唯一特殊之处，就是在创建新对象的时候了。</p><p><br />那么我们就可以利用这一点。比如有两个方法对象 A 和 B，既然从 A 创建的新对象包含了所有 A.prototype 的属性，那么我将它赋给 B.prototype，那么从 B 创建的新对象不也有同样的属性了？写成代码就是这样：</p><p> </p><div class="dp-highlighter"><div class="bar"><div class="tools">Js代码 </div></div><ol class="dp-c"><li><span><span>A.prototype.hello = </span><span class="keyword"><strong><font color="#7f0055">function</font></strong></span><span>(){alert(</span><span class="string"><font color="#0000ff">'Hello!'</font></span><span>);}   </span></span></li><li><span>B.prototype = </span><span class="keyword"><strong><font color="#7f0055">new</font></strong></span><span> A();   </span></li><li><span></span><span class="keyword"><strong><font color="#7f0055">new</font></strong></span><span> B().hello();  </span></li></ol></div><pre class="js" style="DISPLAY: none" name="code">A.prototype.hello = function(){alert('Hello!');}
B.prototype = new A();
new B().hello();</pre><br />这就是 JavaScript 的所谓“继承”了，其实质就是属性的拷贝，这里利用了 prototype 来实现。如果不用 prototype，那就用循环了，效果是一样的。所谓“多重继承”，自然就是到处拷贝了。<br /><br />JavaScript 中面向对象的原理，就是上面这些了。自始至终我都没提到“类”的概念，因为 JavaScript 本来就没有“类”这个东西。面向对象可以没有类吗？当然可以。先有类，然后再有对象，这本来就不合理，因为类本来是从对象中归纳出来的，先有对象再有类，这才合理。像下面这样的：<br /><br /><div class="dp-highlighter"><div class="bar"><div class="tools">Js代码 </div></div><ol class="dp-c"><li><span><span class="keyword"><strong><font color="#7f0055">var</font></strong></span><span> o = {}; </span><span class="comment"><font color="#008200">// 我发现了一个东西。 </font></span><span>  </span></span></li><li><span>o.eat = </span><span class="keyword"><strong><font color="#7f0055">function</font></strong></span><span>(){</span><span class="keyword"><strong><font color="#7f0055">return</font></strong></span><span> </span><span class="string"><font color="#0000ff">"I am eating."</font></span><span>}  </span><span class="comment"><font color="#008200">// 我发现它会吃； </font></span><span>  </span></li><li><span>o.sleep = </span><span class="keyword"><strong><font color="#7f0055">function</font></strong></span><span>(){</span><span class="keyword"><strong><font color="#7f0055">return</font></strong></span><span> </span><span class="string"><font color="#0000ff">"ZZZzzz..."</font></span><span>}  </span><span class="comment"><font color="#008200">// 我发现它会睡； </font></span><span>  </span></li><li><span>o.talk = </span><span class="keyword"><strong><font color="#7f0055">function</font></strong></span><span>(){</span><span class="keyword"><strong><font color="#7f0055">return</font></strong></span><span> </span><span class="string"><font color="#0000ff">"Hi!"</font></span><span>} </span><span class="comment"><font color="#008200">// 我发现它会说话； </font></span><span>  </span></li><li><span>o.think = </span><span class="keyword"><strong><font color="#7f0055">function</font></strong></span><span>(){</span><span class="keyword"><strong><font color="#7f0055">return</font></strong></span><span> </span><span class="string"><font color="#0000ff">"Hmmm..."</font></span><span>} </span><span class="comment"><font color="#008200">// 我发现它还会思考。 </font></span><span>  </span></li><li><span>  </span></li><li><span></span><span class="keyword"><strong><font color="#7f0055">var</font></strong></span><span> Human = </span><span class="keyword"><strong><font color="#7f0055">new</font></strong></span><span> Function(); </span><span class="comment"><font color="#008200">// 我决定给它起名叫“人”。 </font></span><span>  </span></li><li><span>Human.prototype = o; </span><span class="comment"><font color="#008200">// 这个东西就代表了所有“人”的概念。 </font></span><span>  </span></li><li><span>  </span></li><li><span></span><span class="keyword"><strong><font color="#7f0055">var</font></strong></span><span> h = </span><span class="keyword"><strong><font color="#7f0055">new</font></strong></span><span> Human(); </span><span class="comment"><font color="#008200">// 当我发现其他同它一样的东西， </font></span><span>  </span></li><li><span>alert(h.talk()) </span><span class="comment"><font color="#008200">// 我就知道它也是“人”了！</font></span><span>  </span></li></ol></div><pre class="js" style="DISPLAY: none" name="code">var o = {}; // 我发现了一个东西。
o.eat = function(){return "I am eating."}  // 我发现它会吃；
o.sleep = function(){return "ZZZzzz..."}  // 我发现它会睡；
o.talk = function(){return "Hi!"} // 我发现它会说话；
o.think = function(){return "Hmmm..."} // 我发现它还会思考。

var Human = new Function(); // 我决定给它起名叫“人”。
Human.prototype = o; // 这个东西就代表了所有“人”的概念。

var h = new Human(); // 当我发现其他同它一样的东西，
alert(h.talk()) // 我就知道它也是“人”了！</pre><p> </p><img src ="http://www.blogjava.net/zhuyongjp/aggbug/287180.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhuyongjp/" target="_blank">zhuyongjp</a> 2009-07-17 16:03 <a href="http://www.blogjava.net/zhuyongjp/archive/2009/07/17/287180.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript中的Function（函数）对象</title><link>http://www.blogjava.net/zhuyongjp/archive/2009/07/15/286823.html</link><dc:creator>zhuyongjp</dc:creator><author>zhuyongjp</author><pubDate>Wed, 15 Jul 2009 03:31:00 GMT</pubDate><guid>http://www.blogjava.net/zhuyongjp/archive/2009/07/15/286823.html</guid><wfw:comment>http://www.blogjava.net/zhuyongjp/comments/286823.html</wfw:comment><comments>http://www.blogjava.net/zhuyongjp/archive/2009/07/15/286823.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhuyongjp/comments/commentRss/286823.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhuyongjp/services/trackbacks/286823.html</trackback:ping><description><![CDATA[
		<p>JavaScript中的Function对象是函数，函数的用途分为3类：</p>
		<ol>
				<li>作为普通逻辑代码容器； 
</li>
				<li>作为对象方法； 
</li>
				<li>作为构造函数。 </li>
		</ol>
		<p>
				<strong>1.作为普通逻辑代码容器</strong>
		</p>
		<p>
				<span class="Code">function multiply(x, y){<br />return x*y;<br />}</span>
		</p>
		<p>函数multiply封装了两位数的乘法运算公式：</p>
		<p>
				<span class="Code">var product = multiply(128,128); // product = 16384</span>
		</p>
		<p>创建函数实例的方式有3种。第一种是声明式，即像声明变量一样，将通过function(){}标识符创建的匿名函数直接赋值给变量，以该变量作为调用时的函数名称：</p>
		<p>
				<span class="Code">var multiply = function(x, y){<br />return x*y;<br />}</span>
		</p>
		<p>第二种是定义式，即以function关键字后跟函数名称及(){}来直接定义命名函数，前面第一个multiply函数就是通过定义式创建的。</p>
		<p>第三种是构造函数式，即通过new运算符调用构造函数Function来创建函数。这种方式极不常用，因此就不作介绍了。<span id="more-271"></span></p>
		<p>在创建函数的3种方式中，声明式和定义式还存在细微的差别。比如下列代码中的函数采用声明式：</p>
		<p>
				<span class="Code">var example = function(){<br />return 1;<br />}<br />example();<br />var example = function(){<br />return 2;<br />}<br />example();</span>
		</p>
		<p>执行结果如下：</p>
		<p>
		</p>
		<table style="BORDER-RIGHT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; BORDER-BOTTOM: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0">
				<tbody>
						<tr>
								<td style="WORD-WRAP: break-word" bgcolor="#fdfddf">1<br />2</td>
						</tr>
				</tbody>
		</table>
		<p>而如果采用定义式，即：</p>
		<p>
				<span class="Code">function example(){<br />return 1;<br />}<br />example();<br />function example(){<br />return 2;<br />}<br />example();</span>
		</p>
		<p>那么会得到另一种结果：</p>
		<p>
		</p>
		<table style="BORDER-RIGHT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; BORDER-BOTTOM: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0">
				<tbody>
						<tr>
								<td style="WORD-WRAP: break-word" bgcolor="#fdfddf">2<br />2</td>
						</tr>
				</tbody>
		</table>
		<p>即，在采用定义式创建同名函数时，后创建的函数会覆盖先创建的函数。这种差别是由于JavaScript解释引擎的工作机制所导致的。JavaScript解释引擎在执行任何函数调用之前，首先会在全局作用域中注册以定义式创建的函数，然后再依次执行函数调用。由于注册函数时，后定义的函数重写了先定义的函数，因此无论调用语句位于何处，执行的都是后定义的函数。相反，对于声明式创建的函数，JavaScript解释引擎会像对待任何声明的变量一样，等到执行调用该变量的代码时才会对变量求值。由于JavaScript代码是从上到下顺序执行的，因此当执行第一个example()调用时，example函数的代码就是首先定义代码；而当执行第二个example()调用时，example函数的代码又变成了后来定义的代码。</p>
		<p>
				<strong>2.作为对象方法</strong>
		</p>
		<p>JavaScript在解析代码时，会为声明或定义的函数指定调用对象。所谓调用对象，就是函数的执行环境。如果函数体内有以关键字this声明的变量，则this引用的就是调用对象。</p>
		<p>事实上，在普通的函数中，也存在调用对象，只不过这个调用对象是默认的全局window对象而已。例如：</p>
		<p>
				<span class="Code">var product = window.multiply(128,128); // product = 16384</span>
		</p>
		<p>这说明，默认情况下，在全局作用域中定义或声明的函数的调用对象就是window。</p>
		<p>在面向对象编程中，通常将作为对象成员的函数称为方法。例如：</p>
		<p>
				<span class="Code">var dog = {};<br />dog.name = “heibao”;<br />dog.age = “3 months”;<br />dog.shout = function(){<br />return “Hello, My name is “+ this.name + ” and I am ” + this.age + ” old!”;<br />}<br />dog.shout(); // “Hello, My name is heibao and I am 3 months old!”</span>
		</p>
		<p>有意思的是，对象也可以借用其他对象的方法：</p>
		<p>
				<span class="Code">var cat = {};<br />cat.name = “xiaohua”;<br />cat.age = “2 years”;<br />cat.greet = dog.shout;<br />cat.greet(); // “Hello, My name is xiaohua and I am 2 years old!”</span>
		</p>
		<p>另外，使用函数对象的call和apply方法，还可以动态指定函数或方法的调用对象：</p>
		<p>
				<span class="Code">dog.shout.call(cat); // “Hello, My name is xiaohua and I am 2 years old!”</span>
		</p>
		<p>或者</p>
		<p>
				<span class="Code">dog.shout.apply(cat); // “Hello, My name is xiaohua and I am 2 years old!”</span>
		</p>
		<p>
				<strong>3.作为构造函数</strong>
		</p>
		<p>JavaScript是通过构造函数来模拟面向对象语言中的类的。例如：</p>
		<p>
				<span class="Code">function Animal(sort, character){<br />this.sort = sort;<br />this.character = character;<br />}</span>
		</p>
		<p>以Animal作为构造函数，就可以像下面这样创建一个新对象：</p>
		<p>
				<span class="Code">var dog = new Animal(”mammal”,”four legs”);</span>
		</p>
		<p>创建dog的对象的过程如下：首先，new运算符创建一个空对象（{}），然后以这个空对象为调用对象调用函数Animal，为这个空对象添加两个属性sort和character，接着，再将这个空对象的默认constructor属性修改为构造函数的名称（即Animal；空对象创建时默认的constructor属性值是Object），并且将空对象的__proto__属性设置为指向Animal.prototype——这就是所谓的对象初始化。最后，返回初始化完毕的对象。这里将返回的新对象赋值给了变量dog。</p>
		<p>
				<span class="Code">dog.sort; // mammal<br />dog.character; // four legs<br />dog.constructor; // Animal</span>
		</p>
		<p>聪明的读者结合前面介绍的内容，可能会认为使用new运算符调用构造函数创建对象的过程也可以像下面这样来实现：</p>
		<p>
				<span class="Code">var dog = {};<br />Animal.call(dog, “mammal”,”four legs”);</span>
		</p>
		<p>表面上看，这两行代码与var dog = new Animal(”mammal”,”four legs”);是等价的，其实却不是。虽然通过指定函数的执行环境能够部分达到初始化对象的目的，例如空对象dog确实获得了sort和character这两个属性：</p>
		<p>
				<span class="Code">dog.sort; // mammal<br />dog.character; // four legs<br />dog.constructor; // Object —— 注意，没有修改dog对象默认的constructor属性</span>
		</p>
		<p>但是，最关键的是新创建的dog对象失去了通过Animal.prototype属性继承其他对象的能力。只要与前面采用new运算符调用构造函数创建对象的过程对比一下，就会发现，new运算符在初始化新对象期间，除了为新对象添加显式声明的属性外，还会对新对象进行了一番“暗箱操作”——即将新对象的constructor属性重写为Animal，将新对象的__proto__属性设置为指向Animal.prototype。虽然手工“初始化对象”也可以将dog.constructor重写为Animal，但根据ECMA262规范，对象的__proto__属性对开发人员是只读的，对它的设置只能在通过new运算符创建对象时由JavaScript解释引擎替我们完成。<br />JavaScript是基于原型继承的，如果不能正确设置对象的__proto__属性，那么就意味着默认的继承机制会失效：</p>
		<p>
				<span class="Code">Animal.prototype.greet = “Hi, good lucky!”;<br />dog.greet; // undefined</span>
		</p>
		<p>事实上，在Firefox中，__proto__属性也是可写的：</p>
		<p>
				<span class="Code">Animal.prototype.greet = “Hi, good lucky!”;<br />dog.__proto__ = Animal.prototype;<br />dog.greet; // Hi, good lucky!</span>
		</p>
		<p>但这样做只能在Firefox中行得通。考虑到在兼容多浏览器，必须依赖于new运算符，才能实现基于原型的继承。</p>
<img src ="http://www.blogjava.net/zhuyongjp/aggbug/286823.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhuyongjp/" target="_blank">zhuyongjp</a> 2009-07-15 11:31 <a href="http://www.blogjava.net/zhuyongjp/archive/2009/07/15/286823.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>总结的常用jquery的一些例子</title><link>http://www.blogjava.net/zhuyongjp/archive/2009/07/14/286714.html</link><dc:creator>zhuyongjp</dc:creator><author>zhuyongjp</author><pubDate>Tue, 14 Jul 2009 08:16:00 GMT</pubDate><guid>http://www.blogjava.net/zhuyongjp/archive/2009/07/14/286714.html</guid><wfw:comment>http://www.blogjava.net/zhuyongjp/comments/286714.html</wfw:comment><comments>http://www.blogjava.net/zhuyongjp/archive/2009/07/14/286714.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhuyongjp/comments/commentRss/286714.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhuyongjp/services/trackbacks/286714.html</trackback:ping><description><![CDATA[1.隐藏所有包含连接的段落 <br />$("p[a]").hide() <br />2.显示页面中的第一个段落 <br />$("p:eq(0)").show() <br />3.隐藏当前显示的所有div <br />$("div:visible").hide() <br />4.获取ul下所有li项 <br />$("ul / li") [注意这里面没有空格,是因为QQ的那该死的表情会自己出现] 或者$("ul&gt;li") <br />5.获取所有样式为foo的包含连接的段落 <br />$("p.foo[a]") <br />6.获取无序列表项中包含"BBB"文本的所有连接 <br />$("li[a:contains('BBB')]") <br />7.获取那么属性为bar的input标签 <br />$("input[@name=bar]") <br />8.获取所有选中的单选按钮 <br />$("input[@type=radio][@checked]") <br />9.jquery 将页面中所有的 text 文本框设为null <br />$(":text").val(); <img src ="http://www.blogjava.net/zhuyongjp/aggbug/286714.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhuyongjp/" target="_blank">zhuyongjp</a> 2009-07-14 16:16 <a href="http://www.blogjava.net/zhuyongjp/archive/2009/07/14/286714.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>js中innerHTML,outerHTML与innerText的用法与区别</title><link>http://www.blogjava.net/zhuyongjp/archive/2009/07/14/286712.html</link><dc:creator>zhuyongjp</dc:creator><author>zhuyongjp</author><pubDate>Tue, 14 Jul 2009 08:12:00 GMT</pubDate><guid>http://www.blogjava.net/zhuyongjp/archive/2009/07/14/286712.html</guid><wfw:comment>http://www.blogjava.net/zhuyongjp/comments/286712.html</wfw:comment><comments>http://www.blogjava.net/zhuyongjp/archive/2009/07/14/286712.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhuyongjp/comments/commentRss/286712.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhuyongjp/services/trackbacks/286712.html</trackback:ping><description><![CDATA[
		<div>
				<p>用法：<br /><br />&lt;div id="test"&gt;<br />   &lt;span style="color:red"&gt;test1&lt;/span&gt; test2<br />&lt;/div&gt;<br /><br />在JS中可以使用：<br /><br /><strong>test.innerHTML</strong>:</p>
				<p>　　也就是从对象的起始位置到终止位置的全部内容,包括Html标签。 </p>
				<p>　　上例中的test.innerHTML的值也就是“&lt;span style="color:red"&gt;test1&lt;/span&gt; test2 ”。<br /><br /><strong>test.innerText:</strong> </p>
				<p>　　从起始位置到终止位置的内容, 但它去除Html标签 </p>
				<p>　　上例中的text.innerTest的值也就是“test1 test2”, 其中span标签去除了。 </p>
				<p>
						<strong>test.outerHTML:</strong>
				</p>
				<p>
						<strong>　　</strong>除了包含innerHTML的全部内容外, 还包含对象标签本身。</p>
				<p>　　上例中的text.outerHTML的值也就是&lt;div id="test"&gt;&lt;span style="color:red"&gt;test1&lt;/span&gt; test2&lt;/div&gt;</p>
				<p>
						<strong>
								<br />完整示例：</strong>
				</p>
				<p>&lt;div id="test"&gt;<br />   &lt;span style="color:red"&gt;test1&lt;/span&gt; test2<br />&lt;/div&gt;<br /><br />&lt;a href="javascript:alert(test.innerHTML)"&gt;innerHTML内容&lt;/a&gt;<br />&lt;a href="javascript:alert(test.innerText)"&gt;inerHTML内容&lt;/a&gt;<br />&lt;a href="javascript:alert(test.outerHTML)"&gt;outerHTML内容&lt;/a&gt;<br /><br /><strong>特别说明：</strong></p>
				<p>
						<strong>　　</strong>innerHTML是符合W3C标准的属性，而innerText只适用于IE浏览器，因此，尽可能地去使用innerHTML，而少用innerText，如果要输出不含HTML标签的内容，可以使用innerHTML取得包含HTML标签的内容后，再用正则表达式去除HTML标签，下面是一个简单的符合W3C标准的示例：<br /><br />&lt;a href="javascript:alert(document.getElementById('test').innerHTML.replace(/&lt;.+?&gt;/gim,''))"&gt;无HTML,符合W3C标准&lt;/a&gt;<br /><br />-------------------------------------------------------------------------------------------------------------------------------<br /><br />&lt;html&gt;<br />&lt;head&gt;&lt;/head&gt;<br />&lt;frameset frameborder="yes" frameborder="1" rows="40%,*"&gt;<br />&lt;frame name="top" src="1.html"&gt;<br />&lt;frame name="bottom" src="2.html"&gt;<br />&lt;/frameset&gt;<br />&lt;/html&gt;<br /><br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;script language="javascript"&gt;<br />function init()<br />{    <br />    var aaa = parent.window.frames[0].document.body.innerHTML; <br />    alert(aaa);<br />}<br />&lt;/script&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;p align="center"&gt;nothing&lt;/p&gt;<br />&lt;p align="center"&gt;&lt;input type="button" onclick="init()"; value="click"&gt;&lt;/p&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br /><br />&lt;html&gt;<br />&lt;center&gt;汽车 房产 女人&lt;/center&gt;<br />&lt;/html&gt;<br /></p>
		</div>
<img src ="http://www.blogjava.net/zhuyongjp/aggbug/286712.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhuyongjp/" target="_blank">zhuyongjp</a> 2009-07-14 16:12 <a href="http://www.blogjava.net/zhuyongjp/archive/2009/07/14/286712.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>showModalDialog使用方法</title><link>http://www.blogjava.net/zhuyongjp/archive/2009/07/01/285019.html</link><dc:creator>zhuyongjp</dc:creator><author>zhuyongjp</author><pubDate>Wed, 01 Jul 2009 12:36:00 GMT</pubDate><guid>http://www.blogjava.net/zhuyongjp/archive/2009/07/01/285019.html</guid><wfw:comment>http://www.blogjava.net/zhuyongjp/comments/285019.html</wfw:comment><comments>http://www.blogjava.net/zhuyongjp/archive/2009/07/01/285019.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhuyongjp/comments/commentRss/285019.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhuyongjp/services/trackbacks/285019.html</trackback:ping><description><![CDATA[在传统的WINDOWS   EXE程序中，模态对话框经常出现。例如，写字板程序（WORDPAD.EXE）中的“查看/选项(O)...”菜单被点中后，跳出“选项”对话框，用户一定要响应该对话框，如果该对话框不关闭，是无法回到主窗口的。这经常被应用于要求用户输入多个参数的场合。我们在浏览器中也可以简单地实现该功能。     
  ----   在IE浏览器中，要求用户输入可以使用VBScript的INPUTBOX函数、或者J   Script的window.prompt方法，但是界面都比较单调，并且只能传递一个参数，而用DHTML来实现就灵活多了。     
    
  ----   1.   基本语法     
    
  ----   window对象有一个方法称为showModalDialog，我们可以在页面按钮的onclick中写如下代码：     
    
  <   BUTTON   onclick="window.showModalDialog   
  ('dialog.htm')"   >Search<   /BUTTON   >   
    
  ----   系统会在新窗口中打开dialog.htm页面，并且等待用户响应，如果用户不响应该页面，那么主页面将得不到光标。     
  ----   在dialog.htm中设置window对象的returnValue属性，就可以让主页面得到返回值。例如，在页面的确定按钮的onclick中写：     
    
  window.returnValue   =   window.   
          document.all.iptPeopleID.value   
    
  ----   将输入框iptPeopleID的值赋给window对象的returnValue属性。在主页面中就可以得到这个值：     
          var   str   =   showModalDialog("dialog1.htm")   
    
  ----   2.   传递初始化值     
  ----   如果要向模态页面中传递初始化值，可以在主页面中用如下语句：     
    
  var   cSearchValue=showModalDialog   
  ('dialog.htm',   'ABC')   
  在dialog.htm中使用window.dialogArguments   
  属性可以得到'ABC'。例如：   
  <   SCRIPT   FOR=window   EVENT=onload   LANGUAGE="JScript"   >   
  if   (window.dialogArguments   !=   null)   
                  window.document.all.iptPeopleID.value   =   window.dialogArguments;   
  <   /SCRIPT   >   
    
  ----   3.   传递多个数值     
  ----   如果要向模态页面中传递多个参数，可以先在主页面中定义一个对象，     
    
  function   myDialog()   {   
          var   str1;   
          var   str2;   
  }   
    
  ----   显示模态页面之前初始化该对象，然后调用showModalDialog方法。     
  function   WelcomeYou(iniStr1,iniStr2)   {   
          myDialog.str1   =   iniStr1;   
          myDialog.str2   =iniStr2   ;   
    
  if   (showModalDialog("dialog2.htm",   myDialog)   
  ==false)   //将对象传入   
  ......   
    
  ----   在模态页面中，可以用这样的代码     
  window.document.all.iptID.value=     
  window.dialogArguments.str1   
  来引用数值，或者用这样的代码对之赋值   
  window.dialogArguments.str1   =   
  window.document.all.iptID.value   
    
  ----   完整例程如下：     
  ----   对于只传递一个参数的情况，见：Main1.htm和dialog1.htm。     
    
  ----   对于传递多个参数的情况，见：Main2.htm和dialog2.htm。     
    
    
  父窗体：   
  dim   xxx   '返回值   
  dim   yyy   '传到子窗体的参数     
  var   xxx   =   ShowModalDialog('xxx.asp','yyy','dialogWidth:100px;DialogHeight=290px;status:no')   
  子窗体：   
  dim   yyy   '从父窗体传来的参数   
  dim   xxx   '传回父窗体的参数     
  yyy   =   window.dialogArguments   
  xxx   =   window.returnValue  

本文来自CSDN博客，转载请标明出处：http://blog.csdn.net/liang4571231/archive/2009/04/29/4135316.aspx<img src ="http://www.blogjava.net/zhuyongjp/aggbug/285019.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhuyongjp/" target="_blank">zhuyongjp</a> 2009-07-01 20:36 <a href="http://www.blogjava.net/zhuyongjp/archive/2009/07/01/285019.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>