bind、call、的区别详解·bind·提优升升

bind、call、apply的区别详解

这三种方法看起来挺像的,但其实各有各的特点。它们都像是在给函数换个“主人”,让函数的“心”不再属于原来的对象。


一、相同点

它们的作用都是一样的,就是动态改变函数内部环境对象this的指向。而且,它们都不会改变原来的函数,原来的函数的this指向还是那个指向。


二、异同点

1、执行方式不同

方法 执行方式
call 页面加载后立即执行,是同步代码。
apply 页面加载后立即执行,是同步代码。
bind 不会立即执行,而是返回一个新的函数,是异步代码。

2、传参方式不同

call和bind传参得一个一个来,不能像apply那样用数组。

方法 传参方式
call 逐个传参
apply 数组传参或剩余参数
bind 逐个传参

3、修改this的性质不同

call和apply只是临时改变一下,下次调用原函数时,它的指向还是原来的。

而bind是永久改变,它改变的不是原来的函数,而是返回了一个新函数,这个新函数的this指向就改了,而且改了就改了,不会再变回去了。


延伸阅读

想了解更多关于编程的知识,可以看看这个:实例变量是什么。