相同之处:
他们都可以改变函数内部this的指向
区别:
①call和apply会调用函数,并且改变函数内部的this指向
②call和apply主要的区别其实就是传递的参数不一样,如果你传递的是普通的参数a,b,c,d等就用call,而apply必须是以数组的形式传递【arr】
③bind不会调用函数,可以改变函数内部的this指向
主要应用的场景:
①call经常用来做继承
②apply经常跟数组有关系,比如借助数学对象实现数组最大值最小值查找问题
③bind不会调用函数,但是能够改变this指向,改定时器的指向,还有就是例如tab栏切换需要点击后才修改对应标签里面的值,可以通过bind实现,就不需要声明额外的变量浪费空间了。
注意:bind与上面两个还有不同之处,bind不但不会调用函数,他返回的还是原函数改变this之后产生的新函数,上面两种都是调用原函数,而我们得bind不但不调用还产生了原函数this改变之后的新函数。