自己理解的call,apply,bind方法

首先,js中call,apply,bind方法它们都有一个相同点:更改函数中this的指向例如:




原本this指向的是window中的color:red,但使用了call和apply,让他们的this指向了o,所以输出了blue;

那它们的不同点呢?

首先是传参不同,call后面的括号里可以第一个参数是自己所想要指向的this对象,后面的参数是函数所要传入的参数,并且它多用于函数的继承。例如:


而apply后面的括号里可以第一个参数也是自己所想要指向的this对象,后面的参数一定要是数组,即apply(this,['a','b']);


而bind是比较特殊的一个,它不像call,apply一样调用了之后,函数立马执行,它是返回一个新的函数,只不过新的函数中this指向已经改变了。



bind括号后面的第一个值也是this指向的对象,其余的是函数的参数。

总结:

call经常用做继承;

apply经常跟数组有关系,比如借助于数学对象实现数组最大值最小值;

bind不调用函数,但是还想改变this指向,比如改变定时器内部的this指向;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容