首页 > 试题广场 >

说一说call apply bind的作用和区别?

[问答题]
说一说call apply bind的作用和区别?
首先,call apply bind三个方法都可以用来改变函数的this指向,具体区别如下:
1、fn.call (newThis,params) call函数的第一个参数是this的新指向,后面依次传入函数fn要用到的参数。会立即执行fn函数。
2、fn.apply (newThis,paramsArrapply函数的第一个参数是this的新指向,第二个参数是fn要用到的参数数组,会立即执行fn函数。
3、fn.bind (newThis,params) bind函数的第一个参数是this的新指向,后面的参数可以直接传递,也可以按数组的形式传入。  不会立即执行fn函数,且只能改变一次fn函数的指向,后续再用bind更改无效。返回的是已经更改this指向的新fn
编辑于 2022-07-27 08:44:20 回复(1)
1.call apply改变this,直接调用,bind改变this,返回函数 2.call:参数是单个的,apply参数是数组
发表于 2022-04-18 16:17:25 回复(0)
三者的作用都是改变this指向,第一个参数都是需要指向的对象,call和bind的后面的参数则为参数列表,而apply是一个数组,call和apply都会立即执行,而bind返回一个函数
发表于 2022-04-26 13:02:57 回复(0)
bind只接收一个参数。。。不对吧? MDN:解释: bind() 方法创建一个新的函数,在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用。
发表于 2022-08-10 23:16:01 回复(0)
call apply bind 都可以改变this指向 call apply 会直接执行函数 里边可以有多个参数 第一个参数为this的新指向 第二个参数是 需要用到的参数数组 bind 不会直接执行函数 需要加括号执行
发表于 2022-05-13 10:24:31 回复(0)
浏览器事件循环:先执行同步代码,再先微任务在宏任务。 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)
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)
都是改变this指向; apply参数用数组 立即执行, call参数用逗号分隔 立即执行, bind语法和call一样 但不能立即执行
发表于 2022-08-31 19:17:52 回复(0)
首先,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)
作用:改变this指向 区别:call立即执行,返回执行结果,第一个参数为this,后面陆续传入执行参数。apply 立即执行,返回执行结果,第一个参数为this,第二个参数为执行参数组成的数组。bind,返回一个函数,不会立即执行,第一个参数为this,后面陆续传入参数,支持参数柯里化
发表于 2022-04-29 18:57:59 回复(0)
call: 绑定this对象加参数,调用函数 apply: 绑定this对象加参数(数组),调用函数 bind: 绑定this和参数,其实内部返回一个函数,bind是个高阶函数
编辑于 2024-03-12 10:48:04 回复(0)
call apply bind 都可以改变this指向 call 两个参数(指向,string) 立即调用 apply 两个参数(指向,数组) 立即调用 bind 不会直接调用
编辑于 2024-03-04 16:07:43 回复(0)
三者都可以改变this指向,call和apply第一个参数是this新指向,后面的参数依次传入函数入参,且立即执行函数,bind第一个参数是this新指向,后面的入参以数组形式传入,并且返回该函数,并不会立即执行函数
编辑于 2024-03-03 16:08:26 回复(0)
都可以改变函数的this指向,call和apply会立即执行函数,bind不会立即执行 第一个参数都是需要指向的对象,call和bind的后面的参数则为参数列表,而apply是一个数组
发表于 2024-01-17 16:47:16 回复(0)
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)
call、apply、bind都可以用来改变this指向,三者的第一个参数都是this的新指向;call和bind的第二个参数接受一个参数列表,apply的第二个参数接收一个参数数组,call和apply会立即执行函数,bind不会立即执行
发表于 2023-10-23 20:23:06 回复(0)
更改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)
改变this的指向
发表于 2023-10-08 19:36:55 回复(0)
他们的都可以改变this指向。第一个参数都是指向的对象 区别:call和bind后面的参数为参数列表,而apply的是一个数组,call和apply会立即执行,bind会返回一个函数
发表于 2023-09-25 01:00:13 回复(0)
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)