js中prototype屬性(原型方法)

js中prototype屬性(原型方法)

ID:14025449

大?。?0.00 KB

頁(yè)數(shù):9頁(yè)

時(shí)間:2018-07-25

js中prototype屬性(原型方法)_第1頁(yè)
js中prototype屬性(原型方法)_第2頁(yè)
js中prototype屬性(原型方法)_第3頁(yè)
js中prototype屬性(原型方法)_第4頁(yè)
js中prototype屬性(原型方法)_第5頁(yè)
資源描述:

《js中prototype屬性(原型方法)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、js中prototype屬性(原型方法)JS中的prototype2011-06-0314:40by軒脈刃,12237閱讀,14評(píng)論,收藏,編輯JS中的phototype是JS中比較難理解的一個(gè)部分本文基于下面幾個(gè)知識(shí)點(diǎn):1原型法設(shè)計(jì)模式在.Net中可以使用clone()來(lái)實(shí)現(xiàn)原型法原型法的主要思想是,現(xiàn)在有1個(gè)類A,我想要?jiǎng)?chuàng)建一個(gè)類B,這個(gè)類是以A為原型的,并且能進(jìn)行擴(kuò)展。我們稱B的原型為A。2javascript的方法可以分為三類:a類方法b對(duì)象方法c原型方法例子:functionPeople(name){this.name=name;//對(duì)象方

2、法this.Introduce=function(){alert("Mynameis"+this.name);}}//類方法People.Run=function(){alert("Icanrun");}//原型方法People.prototype.IntroduceChinese=function(){alert("我的名字是"+this.name);}//測(cè)試varp1=newPeople("Windking");p1.Introduce();People.Run();p1.IntroduceChinese();3obj1.func.call(o

3、bj)方法意思是將obj看成obj1,調(diào)用func方法好了,下面一個(gè)一個(gè)問(wèn)題解決:prototype是什么含義?javascript中的每個(gè)對(duì)象都有prototype屬性,Javascript中對(duì)象的prototype屬性的解釋是:返回對(duì)象類型原型的引用。A.prototype=newB();理解prototype不應(yīng)把它和繼承混淆。A的prototype為B的一個(gè)實(shí)例,可以理解A將B中的方法和屬性全部克隆了一遍。A能使用B的方法和屬性。這里強(qiáng)調(diào)的是克隆而不是繼承??梢猿霈F(xiàn)這種情況:A的prototype是B的實(shí)例,同時(shí)B的prototype也是A的

4、實(shí)例。先看一個(gè)實(shí)驗(yàn)的例子:functionbaseClass(){this.showMsg=function(){alert("baseClass::showMsg");}}functionextendClass(){}extendClass.prototype=newbaseClass();varinstance=newextendClass();instance.showMsg();//顯示baseClass::showMsg我們首先定義了baseClass類,然后我們要定義extentClass,但是我們打算以baseClass的一個(gè)實(shí)例為原型

5、,來(lái)克隆的extendClass也同時(shí)包含showMsg這個(gè)對(duì)象方法。extendClass.prototype=newbaseClass()就可以閱讀為:extendClass是以baseClass的一個(gè)實(shí)例為原型克隆創(chuàng)建的。那么就會(huì)有一個(gè)問(wèn)題,如果extendClass中本身包含有一個(gè)與baseClass的方法同名的方法會(huì)怎么樣?下面是擴(kuò)展實(shí)驗(yàn)2:functionbaseClass(){this.showMsg=function(){alert("baseClass::showMsg");}}functionextendClass(){this.

6、showMsg=function(){alert("extendClass::showMsg");}}extendClass.prototype=newbaseClass();varinstance=newextendClass();instance.showMsg();//顯示extendClass::showMsg實(shí)驗(yàn)證明:函數(shù)運(yùn)行時(shí)會(huì)先去本體的函數(shù)中去找,如果找到則運(yùn)行,找不到則去prototype中尋找函數(shù)。或者可以理解為prototype不會(huì)克隆同名函數(shù)。那么又會(huì)有一個(gè)新的問(wèn)題:如果我想使用extendClass的一個(gè)實(shí)例instance調(diào)

7、用baseClass的對(duì)象方法showMsg怎么辦?答案是可以使用call:extendClass.prototype=newbaseClass();varinstance=newextendClass();varbaseinstance=newbaseClass();baseinstance.showMsg.call(instance);//顯示baseClass::showMsg這里的baseinstance.showMsg.call(instance);閱讀為“將instance當(dāng)做baseinstance來(lái)調(diào)用,調(diào)用它的對(duì)象方法showMsg

8、”好了,這里可能有人會(huì)問(wèn),為什么不用baseClass.showMsg.call(instance);這就是

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。