首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
说一说call apply bind的作用和区别?
[问答题]
说一说call apply bind的作用和区别?
添加笔记
求解答(0)
邀请回答
收藏(164)
分享
纠错
85个回答
添加回答
151
酱橙~
首先,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)
20
牛客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
牛客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)
0
offer快来呀~~~
更改this指向 fn.call(newThis, params1, params2),会立即执行fn函数 fn.apply(newThis, [params1, params2]),会立即执行fn函数 fn.bind(newThis, params1, params2)\fn.bind(newThis, [params1, params2]), 返回一个将this指向已经更改后的函数
发表于 2023-10-23 11:03:50
回复(0)
0
ywg2002
改变this的指向
发表于 2023-10-08 19:36:55
回复(0)
0
potato_993
他们的都可以改变this指向。第一个参数都是指向的对象 区别:call和bind后面的参数为参数列表,而apply的是一个数组,call和apply会立即执行,bind会返回一个函数
发表于 2023-09-25 01:00:13
回复(0)
0
愿offer多多的放鸽子能手很谦虚
call apply bind三个方法都可以用来改变函数的this指向 区别: 1.fn.call(newThis,params) 第一个参数是this的新指向,后面依次传入函数fn要用到的参数。会立即执行fn函数。 2.fn.apply(newThis,paramsArr) 第一个参数是this的新指向,第二个参数是fn要用到的参数数组。会立即执行fn函数。 3.fn.bind(newThis,params) 第一个参数是this的新指向,后面的参数可以直接传递,也可以按数组的形式传入。不会立即执行fn函数,且只能改变一次fn函数的指向,后续再用bind更改无效。返回的是已经更改this指向的新 fn
发表于 2023-09-04 18:43:36
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
Javascript
上传者:
real19931
难度:
85条回答
164收藏
1337浏览
热门推荐
相关试题
ajax原理、如何实现刷新数据及优点?
迅雷
Javascript
评论
(7)
数据链路层滑动窗口机制中发送窗口(...
网络基础
评论
(1)
有关linux线程的描述,正确的是...
京东
Java工程师
C++工程师
iOS工程师
安卓工程师
运维工程师
前端工程师
算法工程师
PHP工程师
2018
评论
(1)
用一种动物介绍你自己
通用能力
评论
(1)
请你说几个海量数据存储常见问题以及...
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题