【各大厂常见前端面试题5】--call()、apply()、bind() 的三者的区别?

145 阅读2分钟

【各大厂常见面试题5】--call()、apply()、bind() 的三者的区别?

1.call()、apply()、bind() 方法定义解析

call()apply()bind() 都是 JavaScript 中 Function 对象的内置方法,用于改变函数的 this 指向。

call() 方法允许您在特定的作用域中调用函数,第一个参数是要设置为 this 的对象,后面的参数是给函数传递的参数。它在函数调用期间立即执行。

apply()call() 相似,只是它的第二个参数是一个参数数组,而不是一个参数列表。

bind() 方法创建一个新的函数,在调用时允许您指定 this 对象和参数。它不会立即调用函数,而是返回一个绑定了指定参数的新函数,您可以在以后使用该函数。 浏览器环境下,js单线程机制使得js执行过程中永远只能同时执行一个任务,每次任务的执行主线 程会优先执行同步任务,每次执行完成所有同步任务后对microtask 做检查看是否为空 ,如果为空,则判断是否需要进行渲染页面,如果不需要,再进行下次循环, 如microtask队列不为空则先执行完所有的microtask,再执行下一次宏任务。知道执行完成所有的任务队列。

2.call()、apply()、bind()三者的区别?

相同点:call()、apply() 和 bind() 都是 JavaScript 中的函数方法,用于改变函数的调用对象。 区别:

1、参数:call() 和 apply() 接受两个参数:第一个是要绑定给 this 的值,第二个是一个参数数组;而 bind() 只接受第一个参数,但返回一个新的函数,该函数在调用时可以接受其他参数。

2、调用时机:call() 和 apply() 立即调用函数;而 bind() 返回一个新的函数,该函数可以在以后调用。

3、返回值:call() 和 apply() 直接返回函数的返回值;而 bind() 返回一个新的函数,该函数的返回值可以在以后确定。

最后 附其他面试题
【各大厂常见面试题3】--http和https系列
【各大厂常见面试题2】--函数
【各大厂常见面试题1】--变量

读后有收获可以微信请作者喝咖啡,有疑问请加微信讨论

image.png image.png