该文章主要了解js中这三个修改this指向api的异同之处
同:这三个api都是用来修改被被调用的方法内部this指向,以及传参
异:apply的传参方式是以数组的方式传入第二个参数,而bind和call除了第一个参数是this指向,后面的参数与方法一致
例:
let x = {}
function fun(a,b,c) {
console.log(a+b+c)
}
fun.apply(x,[1,2,3]) // 6
fun.bind(x,1,2,3)() // 6
fun.call(x,1,2,3) // 6
bind与call的区别:上面提到apply与其他两个区别,那么bind和call的区别又是什么呢,其实就是bind不会执行这个函数仅仅修改了this指向和传参,然后返回一个新函数,call却会直接执行
例:
let x = {}
function fun(a,b,c) {
console.log(a)
console.log(b)
console.log(c)
}
let fun2 = fun.bind(x,1,2,3)
fun2() // 6
fun.call(x,1,2,3) // 6
这三个其实非常的好懂区别也不大!