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
posted @ 2023-01-03 14:40  卿六  阅读(35)  评论(0编辑  收藏  举报