apply()與call()的區(qū)別

JavaScript中的每一個(gè)Function對(duì)象都有一個(gè)apply()方法和一個(gè)call()方法,它們的共同之處:都“可以用來(lái)代替另一個(gè)對(duì)象調(diào)用一個(gè)方法,將一個(gè)函數(shù)的對(duì)象上下文從初始的上下文改變?yōu)橛蓆hisObj指定的新對(duì)象”。

  • (1)基本用法
function add(a,b){
  return a+b;  
}
function sub(a,b){
  return a-b;  
}
var a1 = add.apply(sub,[4,2]);  //sub調(diào)用add的方法
var a2 = sub.apply(add,[4,2]);
alert(a1);  //6     
alert(a2);  //2

/*call的用法*/
var a1 = add.call(sub,4,2);
  • (2)實(shí)現(xiàn)繼承
function Animal(name){
  this.name = name;
  this.showName = function(){
        alert(this.name);    
    }    
}

function Cat(name){
  Animal.apply(this,[name]);    
}

var cat = new Cat("咕咕");
cat.showName();
  • (3)多重繼承
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一直都沒(méi)太明白apply()與call()的具體使用原理,今日閑來(lái)無(wú)事,決定好好研究一番。 JavaScript中...
    AKZhang閱讀 373評(píng)論 0 0
  • 它們各自的定義: apply:調(diào)用一個(gè)對(duì)象的一個(gè)方法,用另一個(gè)對(duì)象替換當(dāng)前對(duì)象。例如:B.apply(A, arg...
    chasing_dream閱讀 1,258評(píng)論 0 0
  • 昨天在做面試題時(shí)遇到了這道題: 下面有關(guān)JavaScript中 call和apply的描述,錯(cuò)誤的是? A. ca...
    熒惑3_3閱讀 700評(píng)論 0 1
  • 開(kāi)始看到j(luò)avascript的函數(shù)apply和call時(shí),非常的模糊,由于最近在找工作應(yīng)對(duì)面試,在網(wǎng)上看到一些文章...
    小搖歌閱讀 713評(píng)論 0 0
  • 在JavaScript中,call、apply和bind是Function對(duì)象自帶的三個(gè)方法,這三個(gè)方法的主要作用...
    人不中二枉少年閱讀 584評(píng)論 0 6

友情鏈接更多精彩內(nèi)容