Math.min.apply(null, arr)详解 + apply, call, bind

共同点: 三个都可以改变this指向

apply与call

apply与call类似, 在执行时调用以改变this指向, 有两个参数, 第一个就是需要绑定this的对象

第二个参数即需要传递的参数, 它俩的主要区别就是第二个参数,

call可以添加多个参数, 而apply只能添加一个, 且这个参数必须是数组

b.call(a,1,2) // 将**a**中的this指向**b**
b.apply(a,[10,1]) // 同上

更重要的一点是, apply可以改变参数的形式

let arr = [1, 2, 3]
Math.min.apply(null, arr)
// 这里第一个null表示不需要绑定this, 但是也不能省略
// 不能直接将arr给Math, 因为min必须接受两个及以上参数
// 但是经过这样绑定后, 就成了 Math.min(1,2,3)

bind

bind也可以改变this指向, 也可以传递参数, 但是与上面俩不同的是, 它不是执行是使用, 而是给一个函数绑定后返回修改过this后的函数, 传参数时可以绑定时传递, 该参数作为新函数的参数(实参) ,也可以在调用时传递实参, 实际执行时的参数按照传递的顺序调用

function b(e,d,f){
  console.log(e,d,f)
}
let a = {}
let c = b.bind(a, 10) // 传递第一个参数, 固定了第一个参数10
c(20, 30) // 接着传递下面两个参数, 这样按照顺序一共传递了三个参数, 10, 20, 30
// 如果还是传递三个参数
c(20, 30, 40)// 这里依旧是输出10, 20, 30, 因为前面说了调用时是按照传参的顺序收集的参数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值