javascript(js)中函数apply和call的用法、区别、联系

js中apply和call两种方法作用基本是一样的,主要的功能有两个:
1. 改变函数作用域
2. 借用其他函数的功能

基本的用法为
functionName.apply(作用域, 数组形式参数列表) 和 functionName.apply(作用域, 参数列表)
a.apply(obj, [1, 2])   a.call(obj, 1, 2);

举例说明:
1. 改变函数作用域
比如有两个对象
var a = {
name: 'a',
sayName: function(){
alert(this.name);
}
}
a.sayName(); //弹出a

var b  = {
name: 'b',
sayName: function(){
alert(this.name);
}
}
b.sayName(); //弹出b

见证奇迹的时刻到啦
a.sayName.apply(b); //弹出b
a.sayName.call(b); //弹出b

这个函数的意思是,将对象a中的sayName函数的作用于变为b对象,然后执行sayName这个函数
在这里apply和call功能是一样的

2. 借用其他函数的功能
这个功能以求几个数中最大数为例说明
在js中求几个数中最大值的方法为:
var max = Math.max(1, 2, 10, 7); //结果为10

假如我想求一个数组中的最大怎么办呢? 这时apply就派上用场了
Math.max.apply('', [1, 2, 10, 7]); //结果为10

这里只能使用apply,不能用call,它们的主要区别是apply接受的参数要以数组的形式给出,
而call是要把参数一一列举出来。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值