js call方法詳解(js 的繼承)

js call方法詳解(js 的繼承)

ID:11312414

大?。?4.00 KB

頁數(shù):5頁

時間:2018-07-11

js call方法詳解(js 的繼承)_第1頁
js call方法詳解(js 的繼承)_第2頁
js call方法詳解(js 的繼承)_第3頁
js call方法詳解(js 的繼承)_第4頁
js call方法詳解(js 的繼承)_第5頁
資源描述:

《js call方法詳解(js 的繼承)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。

1、JsCall方法詳解(js的繼承)網(wǎng)絡(luò)世界,大有可為kings,提倡以用戶為主的設(shè)計。call方法請參閱應(yīng)用于:Function對象要求版本5.5調(diào)用一個對象的一個方法,以另一個對象替換當(dāng)前對象。call([thisObj[,arg1[,arg2[,[,.argN]]]]])參數(shù)thisObj可選項。將被用作當(dāng)前對象的對象。arg1,arg2,,argN可選項。將被傳遞方法參數(shù)序列。說明call方法可以用來代替另一個對象調(diào)用一個方法。call方法可將一個函數(shù)的對象上下文從初始的上下文改變?yōu)橛蓆hisObj指定的新對象。如果沒有提供t

2、hisObj參數(shù),那么Global對象被用作thisObj。-------------------------------------------------------------------------------------------乍一看,很容易把人看迷胡,先做一些簡單的說明obj1.method1.call(obj2,argument1,argument2)如上,call的作用就是把obj1的方法放到obj2上使用,后面的argument1..這些做為參數(shù)傳入.舉一個具體的例子functionadd(a,b){???al

3、ert(a+b);}functionsub(a,b){???alert(a-b);}add.call(sub,3,1);這個例子中的意思就是用add來替換sub,add.call(sub,3,1)==add(3,1),所以運行結(jié)果為:alert(4);//注意:js中的函數(shù)其實是對象,函數(shù)名是對Function對象的引用??匆粋€稍微復(fù)雜一點的例子functionClass1(){???this.name="class1";???this.showNam=function()???{??????alert(this.name);???

4、}}functionClass2(){???this.name="class2";}varc1=newClass1();varc2=newClass2();c1.showNam.call(c2);注意,call的意思是把c1的方法放到c2上執(zhí)行,原來c2是沒有showNam()方法,現(xiàn)在是把c1的showNam()方法放到c2上來執(zhí)行,所以this.name應(yīng)該是class2,執(zhí)行的結(jié)果就是:alert("class2");怎么樣,覺得有意思了吧,可以讓a對象來執(zhí)行b對象的方法,這是java程序員所不敢想的。還有更有趣的,可以用ca

5、ll來實現(xiàn)繼承functionClass1(){???this.showTxt=function(txt)???{??????alert(txt);???}}functionClass2(){???Class1.call(this);}varc2=newClass2();c2.showTxt("cc");這樣Class2就繼承Class1了,Class1.call(this)的意思就是使用Class1對象代替this對象,那么Class2中不就有Class1的所有屬性和方法了嗎,c2對象就能夠直接調(diào)用Class1的方法以及屬性了,執(zhí)

6、行結(jié)果就是:alert(“cc”);對的,就是這樣,這就是javaScript如何來模擬面向?qū)ο笾械睦^承的,還可以實現(xiàn)多重繼承。functionClass10(){???this.showSub=function(a,b)???{??????alert(a-b);???}}functionClass11(){???this.showAdd=function(a,b)???{??????alert(a+b);???}}functionClass2(){???Class10.call(this);???Class11.call(this

7、);}很簡單,使用兩個call就實現(xiàn)多重繼承了當(dāng)然,js的繼承還有其他方法,例如使用原型鏈,這個不屬于本文的范疇,只是在此說明call的用法說了call,當(dāng)然還有apply,這兩個方法基本上是一個意思區(qū)別在于call的第二個參數(shù)可以是任意類型,而apply的第二個參數(shù)必須是數(shù)組原文網(wǎng)址:http://hi.baidu.com/kings_1981/blog/item/b220e43d08df74c09f3d6225.html由弘一網(wǎng)童保存,尚未注冊。注冊

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

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

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