小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

博客園 - 鳥食軒 - JScript中的prototype(原型)屬性研究(1)

 weicat 2006-03-23

JScript中的prototype(原型)屬性研究(1)

    我們知道JScript中對象的prototype屬性,是用來返回對象類型原型的引用的。我們使用prototype屬性提供對象的類的一組基本功能。并且對象的新實例會"繼承"賦予該對象原型的操作。但是這個prototype到底是怎么實現(xiàn)和被管理的呢?

    對于對象的prototype屬性的說明,JScript手冊上如是說:所有 JScript 內(nèi)部對象都有只讀的 prototype 屬性??梢韵蚱湓椭袆討B(tài)添加功能(屬性和方法),但該對象不能被賦予不同的原型。然而,用戶定義的對象可以被賦給新的原型。

    下面我們看三個經(jīng)典的prototype屬性的使用示例。

    1、為腳本環(huán)境內(nèi)建對象添加方法:

 Array.prototype.max = function()
 {
     
var i, max = this[0];
     
for (i = 1; i < this.length; i++)
     {
       
if (max < this[i])
        max 
= this[i];
     }
    
return max;
 };

    2、為用戶自定義類添加方法:
 function TestObject(name)
 {
     
this.m_Name = name;
 }

 TestObject.prototype.ShowName 
= function()
 {
     alert(
this.m_Name);
 };

    3、更新自定義類的prototype:
 function TestObjectA()
 {
    
this.MethodA = function()
    {
       alert(‘TestObjectA.MethodA()‘);
    }
 }

 
function TestObjectB()
 {
    
this.MethodB = function()
    {
       alert(‘TestObjectB.MethodB()‘);
    }
 }

 TestObjectB.prototype 
= new TestObjectA();

    第三個很眼熟吧?對啊,它就是我們前面介紹的原型繼承法呀~~ 不過今天我們不是研究"繼承",之所以可以這樣來實現(xiàn)一種繼承,只是利用了prototype屬性的一個副作用而已。

    prototype還有一個默認的屬性:constructor,是用來表示創(chuàng)建對象的函數(shù)的(即我們OOP里說的構造函數(shù))。constructor屬性是所有具有prototype屬性的對象的成員。它們包括除Global和Math對象以外的所有JScript內(nèi)部對象。constructor屬性保存了對構造特定對象實例的函數(shù)的引用。

    弄清楚了JScript中prototype屬性怎么使用后,下面我們再來深入的研究它。

posted on 2005-02-17 22:59 birdshome 閱讀(7091) 評論(6)  編輯 收藏 收藏至365Key 所屬分類: JScript&DHTML開發(fā)

評論

# re: JScript中的prototype(原型)屬性研究(1)  回復   

暈,我正看著下面要怎么寫呢。敲一下回車就提交了。
不好意思,請刪除。
說說對第三種的看法:

個人認為這樣寫不是很方便。^_^

還不如:

function TestObjectA()
{
this.MethodA = function()
{
alert(‘TestObjectA.MethodA()‘);
}
this.MethodB = function()
{
alert(‘TestObjectB.MethodB()‘);
}
}

可能是我喜歡使用js的動態(tài)性的原因吧!
像第三種一定得加上TestObjectB.prototype = new TestObjectA();
這樣很不方便。
我覺得還不如在某些不需要MethodA 的地方加上delete。這樣就很像virtual了。
比如:
<script>
function A(){
this.a = function(){
alert("asdf");
}
this.b = function(){
alert("ttt");
}
}
var a = new A();
for(var item in a) a[item]();
delete a.a;
for(var item in a) a[item]();
</script>
這樣可以想覆蓋就覆蓋,想刪除就刪除,想使用就使用。
2005-02-18 03:43 | 辣妹子

# re: JScript中的prototype(原型)屬性研究(1)  回復   

這個主題專講prototype,例三只是說明用戶可以覆蓋自定"類"的prototype而已。謝謝你的意見,不過好像更適合JS的OOP這樣的討論哦。
2005-02-18 10:13 | birdshome

# re: JScript中的prototype(原型)屬性研究(1)  回復   

"3、更新自定義類的prototype:"
這個傻了吧? 不是也用了this.methodxx = xx了么?
寫東西要統(tǒng)一
2005-03-13 13:07 | xx

# re: JScript中的prototype(原型)屬性研究(1)  回復   

@xx
這個和第2個一樣嗎?你理解的是什么?
2005-03-13 13:29 | birdshome

# re: JScript中的prototype(原型)屬性研究(1)  回復   

好好利用prototype是我的目標。謝謝樓主的講解,真是令人茅塞頓開!
2005-07-19 19:27 | 軒轅劍

# re: JScript中的prototype(原型)屬性研究(1)  回復   

謝謝樓主的講解 真透徹
2005-11-23 14:11 | 大飛

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多