细谈apply()与call()

两者使用的目的:改变调用的函数体内部的this的指向。
  相同点:均是调用某对象的方法,格式:obj.函数名.call()
  call(obj,参数1,参数2):两个参数,前者将代替Function类里this对象,后者(多个元素)作为参数传递给被调用的函数。

var foo = {
  name:"name1",
  logName:function(){
    console.log(this.name);
  }
}
var bar={
  name:"name2"
};
foo.logName.call(bar);//name2

  apply(obj,[参数1,参数2]),同上,不同点是第二个参数是数组。(将数组的每个元素作为一个个参数传递给被调用的函数,性质与call()方法一样)

  利用apply()这一特性的一些小场景:

//求数组的最大值
var arr = [1,2,3,4,7,34,8]     
var max=Math.max.apply(null,arr)  //34   Math.max()参数不能为数组

//求数组的最小值
var max=Math.min.apply(null,arr)  //1   
//合并数组并返回新数组的长度
var arr1=new Array("1","2","3");
var arr2=new Array("4","5","6");
Array.prototype.push.apply(arr1,arr2); //6


没事可以来看看,万一有收获呢。

个人博客地址https://aqingya.cn


愿你的坚持终有回报。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值