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指向就改了,而且改了就改了,不会再变回去了。
延伸阅读
想了解更多关于编程的知识,可以看看这个:实例变量是什么。