bind()和call()和apply()的区别

引自 https://www.jianshu.com/p/a76dc120be20

bind()和call()和apply()的区别

首先说说call()和apply()的区别

它们都是改变this的指向问题,会传入2部分参数,第一个是:你要指定的执行上下文,第二个是:传递参数。

大白话来讲就是:就是调用函数,但是让它在你指定的上下文下执行,这样,函数可以访问的作用域就会改变。

它们的区别是什么?

call的第二部分参数要一个一个传,apply要把这些参数放到数组中。这就是他们的区别,真的就这么点区别

接着说bind()跟它们的区别

bind()是es5中的方法,他也是用来实现上下文绑定,看它的函数名就知道。

bind()和call与apply不同。bind是新创建一个函数,然后把它的上下文绑定到bind()括号中的传入的参数,然后将它返回。

bind后函数不会执行,而只是返回一个改变了上下文的函数副本,而call和apply是直接执行函数。

你可能感兴趣的:(bind()和call()和apply()的区别)