﻿<?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-Java，你是如此美丽!-文章分类-jquery</title><link>http://www.blogjava.net/mhl1003/category/46151.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 31 Oct 2012 22:53:02 GMT</lastBuildDate><pubDate>Wed, 31 Oct 2012 22:53:02 GMT</pubDate><ttl>60</ttl><item><title>JScript中的prototype(原型)属性研究(1) </title><link>http://www.blogjava.net/mhl1003/articles/390501.html</link><dc:creator>自由战士</dc:creator><author>自由战士</author><pubDate>Wed, 31 Oct 2012 02:23:00 GMT</pubDate><guid>http://www.blogjava.net/mhl1003/articles/390501.html</guid><wfw:comment>http://www.blogjava.net/mhl1003/comments/390501.html</wfw:comment><comments>http://www.blogjava.net/mhl1003/articles/390501.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mhl1003/comments/commentRss/390501.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mhl1003/services/trackbacks/390501.html</trackback:ping><description><![CDATA[我们知道JScript中对象的prototype属性，是用来返回对象类型原型的引用的。我们使用prototype属性提供对象的类的一组基本功能。并且对象的新实例会"继承"赋予该对象原型的操作。但是这个prototype到底是怎么实现和被管理的呢？<br /><br />&nbsp;&nbsp;&nbsp; 对于对象的prototype属性的说明，JScript手册上如是说：所有 JScript 内部对象都有只读的 prototype 属性。可以向其原型中动态添加功能(属性和方法)，但该对象不能被赋予不同的原型。然而，用户定义的对象可以被赋给新的原型。 
<p>&nbsp;&nbsp;&nbsp; 下面我们看三个经典的prototype属性的使用示例。<br /><br />&nbsp;&nbsp;&nbsp; 1、为脚本环境内建对象添加方法：</p>
<div style="border-bottom: windowtext 0.5pt solid; border-left: windowtext 0.5pt solid; padding-bottom: 4px; padding-left: 5.4pt; width: 98%; padding-right: 5.4pt;background: #e6e6e6; word-break: break-all; border-top: windowtext 0.5pt solid; border-right: windowtext 0.5pt solid; padding-top: 4px">
<div><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;<span style="color: #000000">Array.prototype.max&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">()<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;{<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp; &nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;i,&nbsp;max&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">[</span><span style="color: #000000">0</span><span style="color: #000000">];<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp; &nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.length;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp; {<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(max&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">[i])<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;max&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">[i];<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp; }<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;max;<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;};</span></div></div><br />&nbsp;&nbsp;&nbsp; 2、为用户自定义类添加方法： 
<div style="border-bottom: windowtext 0.5pt solid; border-left: windowtext 0.5pt solid; padding-bottom: 4px; padding-left: 5.4pt; width: 98%; padding-right: 5.4pt;background: #e6e6e6; word-break: break-all; border-top: windowtext 0.5pt solid; border-right: windowtext 0.5pt solid; padding-top: 4px">
<div><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;<span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;TestObject(name)<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;{<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp; &nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.m_Name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;name;<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;}<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;TestObject.prototype.ShowName&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">()<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;{<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp; &nbsp;&nbsp;&nbsp;alert(</span><span style="color: #0000ff">this</span><span style="color: #000000">.m_Name);<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;};</span></div></div><br />&nbsp;&nbsp;&nbsp; 3、更新自定义类的prototype： 
<div style="border-bottom: windowtext 0.5pt solid; border-left: windowtext 0.5pt solid; padding-bottom: 4px; padding-left: 5.4pt; width: 98%; padding-right: 5.4pt;background: #e6e6e6; word-break: break-all; border-top: windowtext 0.5pt solid; border-right: windowtext 0.5pt solid; padding-top: 4px">
<div><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;<span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;TestObjectA()<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;{<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.MethodA&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">()<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert('TestObjectA.MethodA()');<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;}<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;TestObjectB()<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;{<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.MethodB&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">()<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert('TestObjectB.MethodB()');<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;}<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;TestObjectB.prototype&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;TestObjectA();</span></div></div><br />&nbsp;&nbsp;&nbsp; 第三个很眼熟吧？对啊，它就是我们前面介绍的<a href="http://www.cnblogs.com/birdshome/archive/2005/02/01/100145.html">原型继承法</a>呀~~ 不过今天我们不是研究"继承"，之所以可以这样来实现一种继承，只是利用了prototype属性的一个副作用而已。<br /><br />&nbsp;&nbsp;&nbsp; prototype还有一个默认的属性：constructor，是用来表示创建对象的函数的(即我们OOP里说的构造函数)。constructor属性是所有具有prototype属性的对象的成员。它们包括除Global和Math对象以外的所有JScript内部对象。constructor属性保存了对构造特定对象实例的函数的引用。<br /><br />&nbsp;&nbsp;&nbsp; 弄清楚了JScript中prototype属性怎么使用后，<a href="http://www.cnblogs.com/birdshome/archive/2005/02/21/101550.html">下面</a>我们再来深入的研究它。<br /><br /><img src ="http://www.blogjava.net/mhl1003/aggbug/390501.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mhl1003/" target="_blank">自由战士</a> 2012-10-31 10:23 <a href="http://www.blogjava.net/mhl1003/articles/390501.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>