js中call、bind、apply的区别

前言

call、bind、apply 都是 JavaScript 中用于改变函数执行上下文(即 this 指向)的方法。

语法:函数.call()、函数.call()、函数.call()

call、bind、apply的区别

一、传参方式不同

三者第一个参数都是this要指向的对象,如果如果没有这个参数或参数为undefined或null,则默认指向全局window。

三者都可以传参,但是apply是数组,而call是参数列表,且apply和call是一次性传入参数,而bind可以分为多次传入。

fn.call(thisArg, arg1, arg2, …) // 接收参数列表
fn.apply(thisArg, argsArray) // apply 接收数组参数
fn.bind(thisArg, arg1, arg2, …) // 接收参数列表

二、执行方式不同

all和apply是改变后页面加载之后就立即执行。

bind 是返回绑定this之后的函数,便于稍后调用。

三、修改this的性质不同

call、apply只是临时的修改一次,也就是call和apply方法的那一次;当再次调用原函数的时候,它的指向还是原来的指向。

bind是永久修改函数this指向,但是它修改的不是原来的函数;而是返回一个修改过后新的函数,此函数的this永远被改变了,绑定了就修改不了。

赞(0) 打赏

评论 抢沙发

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫