資源描述:
《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)童保存,尚未注冊。注冊