apply和bind以及call的作用和区别
作用
作用是改变this的指向
var name = 'windows'
function foo() {
console.log(this, this.name);
}
foo() // windows, windows
区别
apply使用
apply接受两个参数,第一个是this指向的对象,第二个是函数调用的参数数组
const obj1 = {
name: 'obj1'
}
foo.apply(obj1, []) // obj1, obj1
call的使用
call接受一个或多个参数,第一个参数是this指向的对象,后面的是函数的调用参数
const obj2 = {
name: 'obj2',
}
foo.call(obj2, 1, 2, 3) // obj2, obj2
bind的使用
bind接受一个参数,表示this指向的对象,然后返回一个新的函数,需要手动调用函数
const obj3 = {
name: 'obj3'
}
const foo1 = foo.bind(obj3)
foo1() // obj3, obj3
行百里者半九十