課程
/前端開發(fā)
/jQuery
/jQuery源碼解析(架構(gòu)與依賴模塊)
callback.call 中的call是什么意思?
2015-01-25
源自:jQuery源碼解析(架構(gòu)與依賴模塊) 2-10
正在回答
function max(a, b){ return a > b ? a : b }
var maxValue = max.call(null, 3, 1); ? 則maxValue = 3
上面是將null作為函數(shù)max的this來(lái)執(zhí)行max函數(shù)體。
使用call的主要目的是改變當(dāng)前執(zhí)行函數(shù)的this的指向。具體的三言兩語(yǔ)說(shuō)不太清、可以百度 ?apply與call的用法與區(qū)別
2、常用實(shí)例a、Java代碼??function?add(a,b)??{??????alert(a+b);??}??function?sub(a,b)??{??????alert(a-b);??}????add.call(sub,3,1);????這個(gè)例子中的意思就是用?add?來(lái)替換?sub,add.call(sub,3,1)?==?add(3,1)?,所以運(yùn)行結(jié)果為:alert(4);?//?注意:js?中的函數(shù)其實(shí)是對(duì)象,函數(shù)名是對(duì)?Function?對(duì)象的引用。?b、Java代碼??function?Animal(){????????this.name?=?"Animal";????????this.showName?=?function(){????????????alert(this.name);????????}????}??????function?Cat(){????????this.name?=?"Cat";????}???????var?animal?=?new?Animal();????var?cat?=?new?Cat();????????//通過(guò)call或apply方法,將原本屬于Animal對(duì)象的showName()方法交給對(duì)象cat來(lái)使用了。????//輸入結(jié)果為"Cat"????animal.showName.call(cat,",");????//animal.showName.apply(cat,[]);???call?的意思是把?animal?的方法放到cat上執(zhí)行,原來(lái)cat是沒有showName()?方法,現(xiàn)在是把a(bǔ)nimal?的showName()方法放到?cat上來(lái)執(zhí)行,所以this.name?應(yīng)該是?Cat?c、實(shí)現(xiàn)繼承Java代碼??function?Animal(name){??????????this.name?=?name;??????????this.showName?=?function(){??????????????alert(this.name);??????????}??????}??????????function?Cat(name){????????Animal.call(this,?name);????}??????????var?cat?=?new?Cat("Black?Cat");?????cat.showName();???Animal.call(this)?的意思就是使用?Animal對(duì)象代替this對(duì)象,那么?Cat中不就有Animal的所有屬性和方法了嗎,Cat對(duì)象就能夠直接調(diào)用Animal的方法以及屬性了.?d、多重繼承Java代碼??function?Class10()??{??????this.showSub?=?function(a,b)??????{??????????alert(a-b);??????}??}????function?Class11()??{??????this.showAdd?=?function(a,b)??????{??????????alert(a+b);??????}??}????function?Class2()??{??????Class10.call(this);??????Class11.call(this);??}
js 原生方法 ?call 和 apply
call方法:?語(yǔ)法:call([thisObj[,arg1[, arg2[,?? [,.argN]]]]])?定義:調(diào)用一個(gè)對(duì)象的一個(gè)方法,以另一個(gè)對(duì)象替換當(dāng)前對(duì)象。?說(shuō)明:?call 方法可以用來(lái)代替另一個(gè)對(duì)象調(diào)用一個(gè)方法。call 方法可將一個(gè)函數(shù)的對(duì)象上下文從初始的上下文改變?yōu)橛?thisObj 指定的新對(duì)象。?如果沒有提供 thisObj 參數(shù),那么 Global 對(duì)象被用作 thisObj。?apply方法:?語(yǔ)法:apply([thisObj[,argArray]])?定義:應(yīng)用某一對(duì)象的一個(gè)方法,用另一個(gè)對(duì)象替換當(dāng)前對(duì)象。?說(shuō)明:?如果 argArray 不是一個(gè)有效的數(shù)組或者不是 arguments 對(duì)象,那么將導(dǎo)致一個(gè) TypeError。?如果沒有提供 argArray 和 thisObj 任何一個(gè)參數(shù),那么 Global 對(duì)象將被用作 thisObj, 并且無(wú)法被傳遞任何參數(shù)。
具體的你可以百度看看
舉報(bào)
由淺入深地剖析jQuery庫(kù)的設(shè)計(jì)與實(shí)現(xiàn),揭開框架背后的秘密
2 回答關(guān)于代碼中的.fn.init是什么意思
1 回答eq實(shí)現(xiàn)中的 j = +i + ...中的 +i 是什么意思?
3 回答var $$這個(gè)是什么意思?
1 回答這個(gè)什么意思
2 回答第2行至第7是什么意思
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2015-08-03
function max(a, b){ return a > b ? a : b }
var maxValue = max.call(null, 3, 1); ? 則maxValue = 3
上面是將null作為函數(shù)max的this來(lái)執(zhí)行max函數(shù)體。
使用call的主要目的是改變當(dāng)前執(zhí)行函數(shù)的this的指向。具體的三言兩語(yǔ)說(shuō)不太清、可以百度 ?apply與call的用法與區(qū)別
2015-01-25
2015-01-25
js 原生方法 ?call 和 apply
call方法:?
語(yǔ)法:call([thisObj[,arg1[, arg2[,?? [,.argN]]]]])?
定義:調(diào)用一個(gè)對(duì)象的一個(gè)方法,以另一個(gè)對(duì)象替換當(dāng)前對(duì)象。?
說(shuō)明:?
call 方法可以用來(lái)代替另一個(gè)對(duì)象調(diào)用一個(gè)方法。call 方法可將一個(gè)函數(shù)的對(duì)象上下文從初始的上下文改變?yōu)橛?thisObj 指定的新對(duì)象。?
如果沒有提供 thisObj 參數(shù),那么 Global 對(duì)象被用作 thisObj。?
apply方法:?
語(yǔ)法:apply([thisObj[,argArray]])?
定義:應(yīng)用某一對(duì)象的一個(gè)方法,用另一個(gè)對(duì)象替換當(dāng)前對(duì)象。?
說(shuō)明:?
如果 argArray 不是一個(gè)有效的數(shù)組或者不是 arguments 對(duì)象,那么將導(dǎo)致一個(gè) TypeError。?
如果沒有提供 argArray 和 thisObj 任何一個(gè)參數(shù),那么 Global 對(duì)象將被用作 thisObj, 并且無(wú)法被傳遞任何參數(shù)。
具體的你可以百度看看