apply call bind 是用来给函数指定 this 。
call
第一个参数是函数里面的 this,第 2,3,4,5… 个参数依次作为参数传给函数。1
2
3
4function sum(a, b){
return a + b
}
sum.call(sum, 1, 2)//3apply
apply 和 call 类似,第一个参数是函数里面的 this,第二个参数是要传给函数的参数列表,类型是一个伪数组,apply 会把这个伪数组拆成一个个的参数传给函数。1
2
3
4function sum(a, b){
return a + b
}
sum.apply(sum, [1, 2])//3bind
bind接受的参数和 call 一致,但是函数不直接调用,而是返回一个函数,在需要的时候调用。1
2
3
4
5function sum(a, b){
return a + b
}
var newSum = sum.bind(sum, 1, 2)
newSum() //3