这三个方法都是用来改变函数内部this指向的,但使用方式有所不同。

call方法可以立即调用函数,第一个参数是this的指向,后面的参数是函数的参数,参数需要逐个传递。比如func.call(obj, arg1, arg2)。

apply方法也是立即调用函数,第一个参数同样是this的指向,但第二个参数是一个数组,数组中的元素作为函数的参数传递。比如func.apply(obj, [arg1, arg2])。

bind方法不会立即调用函数,而是返回一个新的函数,这个新函数的this被永久绑定到bind的第一个参数上。后续调用这个新函数时,this指向不会改变。比如var newFunc = func.bind(obj)。

总结一下,call和apply都是立即执行,区别在于参数传递方式不同。bind是延迟执行,返回一个新函数。在实际开发中,call和apply常用于借用其他对象的方法,bind常用于事件处理函数中固定this指向。