Bootstrap
本文主要介绍JavaScript中apply call 和 bind用法的区别,它们的作用都是给函数方法中的this赋值,改变this的指向。具体每个方法的用法,可以看下网站的其它文章,下面具体看一下它们之间的区别。

1、Function.bind(obj[,param1,param2,...])

obj:这个对象将代替Function类里this对象
param1:Function的第一个参数。param2: Function的第二个参数。
返回值是个方法。

2、Function.apply(obj,args)方法能接收两个参数

obj:这个对象将代替Function类里this对象
args:这个是数组,它将作为参数传给Function(args–>arguments) 

3、Function.call(obj[,param1,param2,...])

obj:这个对象将代替Function类里this对象
param1:Function的第一个参数。param2: Function的第二个参数。

4、总结

从上面3个方法的用法可以看出,它们之前主要是传递参数不同,或者函数返回值的不同。bind方法返回的是函数。Function方法不会立即执行,需要调用才会执行。这个是另外两个方法主要的不同,下面看下表格,

bind

apply

call

返回值

函数方法

函数方法执行后的值

函数方法执行后的值

参数

多个参数

参数数组

多个参数

可以总结出有3点:

1)除了bind函数方法返回值不同,其它两个都是返回函数方法执行后的返回值。
2)bind和call的参数传递方法是相同的,不同的是apply的第二个参数是一个数组,方法参数通过这个数组传递。
3)3个函数方法的作用相同,要注意一下具体用法的区别。