首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
说一说call apply bind的作用和区别?
[问答题]
说一说call apply bind的作用和区别?
查看答案及解析
添加笔记
求解答(0)
邀请回答
收藏(173)
分享
纠错
89个回答
添加回答
161
酱橙~
首先,call apply bind三个方法都可以用来改变函数的this指向,具体区别如下:
1、fn.call (newThis,params) call函数的第一个参数是this的新指向,后面依次传入函数fn要用到的参数。会立即执行fn函数。
2、fn.apply (
newThis,paramsArr
)
apply
函数的第一个参数是this的新指向,第二个参数是fn要用到的参数数组,
会立即执
行fn函数。
3、fn.
bind
(
newThis,params
)
bind函数的第一个参数是this的新指向,后面的参数可以直接传递,也可以按数组的形式传入。
不
会立即执
行fn函数,且只能改变一次fn函数的指向,后续再用bind更改无效。返回的是已经更改this指向的新fn
编辑于 2022-07-27 08:44:20
回复(1)
21
牛客526141857号
1.call apply改变this,直接调用,bind改变this,返回函数 2.call:参数是单个的,apply参数是数组
发表于 2022-04-18 16:17:25
回复(0)
6
AuguestX
三者的作用都是改变this指向,第一个参数都是需要指向的对象,call和bind的后面的参数则为参数列表,而apply是一个数组,call和apply都会立即执行,而bind返回一个函数
发表于 2022-04-26 13:02:57
回复(0)
5
飞向星辰大海
bind只接收一个参数。。。不对吧? MDN:解释: bind() 方法创建一个新的函数,在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用。
发表于 2022-08-10 23:16:01
回复(0)
2
牛客330669948号
call apply bind 都可以改变this指向 call apply 会直接执行函数 里边可以有多个参数 第一个参数为this的新指向 第二个参数是 需要用到的参数数组 bind 不会直接执行函数 需要加括号执行
发表于 2022-05-13 10:24:31
回复(0)
2
已注销
浏览器事件循环:先执行同步代码,再先微任务在宏任务。 node事件循环:程序输入代码 -》poll轮询 -》check检查阶段,执行setImmediate函数 -》close callback阶段,执行soket.close方法 -》timer检测阶段,执行setTimeout/setInterval定时器 -》I/O回调阶段,执行I/O流事件 -》prepare阶段,空闲期进入下一个轮询。 补充:宏任务:script代码,requestAnimationFrame(浏览器独有),setTimeout,setInterval,操作dom(浏览器独有)IO、UI渲染(浏览器独有)。微任务:promise的方法,process.nextTick(node独有),Mutation.Observer(浏览器独有),async/await
编辑于 2022-05-20 17:55:16
回复(1)
1
winfang
var name = '小王', age = 17; var obj = { name: "小张", objAge: this.age, myFun: function (fm, t) { console.log(this.name + '年龄' + this.age + '来自' + fm + '去往' + t); } } var db = { name: "小李", age: 18 }; obj.myFun.call(db, '成都', '上海'); // 小李年龄18来自成都去往上海 obj.myFun.apply(db, ['成都', '上海']); // 小李年龄18来自成都去往上海 obj.myFun.bind(db, '成都', '上海')(); // 小李年龄18来自成都去往上海 obj.myFun.bind(db, ['成都', '上海'])(); // 小李年龄18来自成都,上海去往undefined
发表于 2023-09-26 15:24:39
回复(0)
1
牛客64823193号
都是改变this指向; apply参数用数组 立即执行, call参数用逗号分隔 立即执行, bind语法和call一样 但不能立即执行
发表于 2022-08-31 19:17:52
回复(0)
1
牛客177945608号
首先,call apply bind三个方法都可以用来改变函数的this指向,具体区别如下: 1、fn.call (newThis,params) call函数的第一个参数是this的新指向,后面依次传入函数fn要用到的参数。会立即执行fn函数。 2、fn.apply (newThis,paramsArr) apply函数的第一个参数是this的新指向,第二个参数是fn要用到的参数数组,会立即执行fn函数。 3、fn.bind (newThis,params) bind函数的第一个参数是this的新指向,后面依次传入函数fn要用到的参数。 不会立即执行fn函数,且只能改变一次fn函数的指向,后续再用bind更改无效。 (call、apply、bind都属于Function.prototype的一个方法,所以每个function实例都有call、apply、bind属性,普通函数/箭头函数都有)
编辑于 2022-09-20 21:05:47
回复(0)
1
夏风八分甜
作用:改变this指向 区别:call立即执行,返回执行结果,第一个参数为this,后面陆续传入执行参数。apply 立即执行,返回执行结果,第一个参数为this,第二个参数为执行参数组成的数组。bind,返回一个函数,不会立即执行,第一个参数为this,后面陆续传入参数,支持参数柯里化
发表于 2022-04-29 18:57:59
回复(0)
0
保持热忱天天向上
1.都可以改变this指向的。 2.call传参是多个,直接执行;bind传参是多个,直接返回执行函数;apply传参是数组,直接执行。
发表于 2024-05-12 23:01:52
回复(0)
0
3636_
三者功能一致,改变函数体内的this指向 call、apply可以立即执行,bind不会立即执行,会返回一个函数 需要加入括号才会调用 apply的第二个参数是数组,call和bind有多个参数需要挨个写
发表于 2024-05-09 17:08:40
回复(0)
0
牛客768251747号
作用:修改this的指向 区别: fn.call(newthis,params):第一个参数为修改的this指向,第二个参数为传入fn内的参数,参数依次传入,并且立即执行fn函数。 fn.apply(newthis,paramArr):第一个参数同上,第二个参数以数组的形式传入作为fn的参数,立即执行fn函数 fn.bind(newthis,params):第一个参数同上,第二个参数可以为数组,也可以直接传递,不会立即执行fn函数,并且bind只能改变一个函数的this,返回结果为更改this后的新fn
发表于 2024-04-29 11:06:53
回复(0)
0
牛客563280983号
他们都可以改变this的指向,call和apply使用时会直接调用,bind需要手动调用,call和bind第二个参数是依次传入,apply是传一个数组
编辑于 2024-04-08 17:48:56
回复(0)
0
牛客906079186号
call: 绑定this对象加参数,调用函数 apply: 绑定this对象加参数(数组),调用函数 bind: 绑定this和参数,其实内部返回一个函数,bind是个高阶函数
编辑于 2024-03-12 10:48:04
回复(0)
0
皮卡丘丘丘_
call apply bind 都可以改变this指向 call 两个参数(指向,string) 立即调用 apply 两个参数(指向,数组) 立即调用 bind 不会直接调用
编辑于 2024-03-04 16:07:43
回复(0)
0
小菜🐔
三者都可以改变this指向,call和apply第一个参数是this新指向,后面的参数依次传入函数入参,且立即执行函数,bind第一个参数是this新指向,后面的入参以数组形式传入,并且返回该函数,并不会立即执行函数
编辑于 2024-03-03 16:08:26
回复(0)
0
孤独的小鲸鱼在开会
都可以改变函数的this指向,call和apply会立即执行函数,bind不会立即执行 第一个参数都是需要指向的对象,call和bind的后面的参数则为参数列表,而apply是一个数组
发表于 2024-01-17 16:47:16
回复(0)
0
kumoko
1.call,apply,bind都用于改变this指向,第一个参数都是this要指向的对象,默认指向windows 2.call和apply会调用函数,并改变函数内部的this指向 3.call传递参数使用逗号隔开,apply使用数组,call,apply一次性传入参数,bind可以分多次传入 4.bind是返回绑定this后的函数
发表于 2023-12-11 16:32:06
回复(0)
0
橘子皮的皮卡丘
call、apply、bind都可以用来改变this指向,三者的第一个参数都是this的新指向;call和bind的第二个参数接受一个参数列表,apply的第二个参数接收一个参数数组,call和apply会立即执行函数,bind不会立即执行
发表于 2023-10-23 20:23:06
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
Javascript
上传者:
real19931
难度:
89条回答
173收藏
1369浏览
热门推荐
相关试题
ajax原理、如何实现刷新数据及优点?
迅雷
Javascript
评论
(7)
设某二叉树的先序遍历序列为abdg...
树
评论
(1)
之前的经历中单品数据分析的经验丰富...
评论
(1)
什么样的人适合做数据分析
评论
(1)
2022 诺瓦科技 Perl re...
perl
System Verilog
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题