校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > js语言和框架 > 关键字
题目

call、apply、bind区别?

解答

 共同作用:为了改变this的指向

function.call(thisArg,arg1,arg2, ...)

function.apply(thisArg, [argsArray])

function.bind(thisArg[,arg1[,arg2[, ...]]])

call 、bind 、 apply 这三个函数的第一个参数都是 this 的指向对象,主要差别是第二个参数:

call 的参数是直接放进去的,第二第三第 n 个参数全都用逗号分隔,直接放到后面 
obj.myFun.call(curObj,'麻辣烫', ... ,'煎饼果子' )
apply 的所有参数都必须放在一个数组里面传进去 
obj.myFun.apply(curObj,['麻辣烫', ..., '煎饼果子' ])
bind 的参数与call一致都是直接放进去的,不同其他两个是,返回值是一个新的函数,所以需要去调用一次才会去执行
obj.myFun.bind(curObj,['麻辣烫', ..., '煎饼果子' ])()

三者的参数类型不限定

C 8条回复 评论
我吃小朋友

怎么没能早点看到你这篇文章呢

发表于 2023-02-05 23:00:00
0 0
一只北极的企鹅

放弃不难,但坚持一定很酷,加油,奥里给!

发表于 2021-09-12 17:55:00
0 0
Month 7'

大佬们回答的好全

发表于 2020-10-27 11:33:57
0 0
一切随缘

它们在功能上是没有区别的,都是改变this的指向,它们的区别主要是在于方法的实现形式和参数传递上的不同。call和apply方法都是在调用之后立即执行的。而bind调用之后是返回原函数,需要再调用一次才行。

发表于 2022-07-15 09:12:50
0 1
一切随缘

call,apply方法是在调用之后立即执行函数,而bind方法没有立即执行,需要将函数再执行一遍。有点类似于闭包

发表于 2020-10-27 10:49:58
0 0
天宫

apply只有两个参数,第二个参数是数据类型。

发表于 2020-10-27 10:16:07
0 0
玻璃

都是改变this指向。
1.但是bind返回的是函数后面需要加()来执行,而call bind是立即执行函数
2.apply传参数格式是数组而其他不是

发表于 2020-10-27 10:06:37
0 0
天宫

cal,apply 是主动的
bind是被动的

发表于 2020-10-24 15:22:19
0 0