apply与call的区别

2023-07-11 09:09:2404:49 2265
所属专辑:javascript面试题
声音简介

function add(a,b){
  return a+b;  
}
function sub(a,b){
  return a-b;  
}
var a1 = add.apply(sub,[4,2]);  //sub调用add的方法  //6 
var a2 = sub.apply(add,[4,2]);   //2




apply:最多只能有两个参数——新this对象和一个数组argArray。如果给该方法传递多个参数,则把参数都写进这个数组里面,当然,即使只有一个参数,也要写进数组里
call:它可以接受多个参数,第一个参数与apply一样,后面则是一串参数列表。
实际上,apply和call的功能是一样的,只是传入的参数列表形式不同。


(2)实现继承
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();


/*call的用法*/
Animal.call(this,name);




数组合并
同样push方法没有提供push一个数组,但是它提供了push(param1,param2...paramN),同样也可以用apply来转换一下这个数组


var arr1=new Array("1","2","3");
var arr2=new Array("4","5","6");
Array.prototype.push.apply(arr1,arr2);    //得到合并后数组的长度,因为push就是返回一个数组的长度

用户评论

表情0/300

孟四段

提个建议,讲使用方法时,可以尝试使用es6的语法,并加以区分,谢谢主播

音频列表
猜你喜欢
Last Call

“Inthisastonishingandpowerfulworkofnonfiction,Greenmeticulouslyreports...

by:AK创客

大强morning call

Hello,thisismorningcall,Ward.I'vebeenkeepingupreadingEnglisheverymo...

by:大强教练Wesley

姐妹打Call吧

妮可儿--广东妹子瞳十七--东北姑娘姐妹之间就应该相互鼓励,相互打Call!一起分享身边的趣事、吐槽周遭的八卦。3000公里的跨省长途,您是否想要窃听闺蜜之间的...

by:妮可儿儿儿儿儿

DOUBLE CALL 3

原作ガストコミックス「DOUBLECALL」原作の種類マンガ原作者緋色れーいち...

by:听友7244953

一起BB CALL

『一起BBCALL』是远在伦敦和墨尔本的好朋友Blake&Bonnie的吹水播客节目。此播客已开启环球旅行模式,邀你一起云游列国,穿越古今,体验各地的文化...

by:千柚柚