call与apply
相同点:call和apply都是改变this指向的API
区别:call和apply的第二位参数的差别
let a=2
let b=3
function add(a,b){
return a+b
}
console.log("call")
console.log(add.call(add,a,b))
console.log("apply")
console.log(add.apply(add,[a,b]))
由此可以看到call接受的是连续参数,apply接受的是数组参数
从运行效率上call比apply性能更佳,因为apply在最后执行的时候需要进行一次解构赋值。
bind
bind接受的参数和call一致,但是bind不会立即调用,他会生成一个新的函数,需要的时候再进行调用即可
function mul(a,b){
return a*b
}
let x= mul.bind(add,2,3)
x()