当前位置:网站首页>js中call、bind、apply的区别?
js中call、bind、apply的区别?
2022-08-08 06:34:00 【二脸懵逼】
相同点:
修改函数运行时this的指向。
如果第一个参数是undefined或者null,this默认指向window
区别:
function fun(...argus) {
console.log(this);
console.log(...argus);
}
let person = {
myName: '王五'
}
1、apply
需要两个参数:
①:this指向,②函数接收的参数,以数组的形式传入。
改变this指向后原函数会立即执行,临时改变this指向一次
fun.apply(person,[1,2,3,4]);//将this指向person
fun(5,6,7,8,9);//this指向window
//如果第一个参数是undefined或者null,this默认指向window
fun(undefined,[1])
fun(null,[2])


2、call
需要两个参数:
①:this指向,②函数接收的参数,以参数列表的形式传入。
改变this指向后原函数会立即执行,临时改变this指向一次
/*两个参数:1、this的指向,2、参数列表*/
fun.call(person, [123], 234, 456)

3、bind
需要两个参数:
①:this指向,②函数接收的参数,以参数列表的形式传入。
改变this指向后原函数不会立即执行,会返回一个永久改变this指向的函数
let bindFun = fun.bind(person,1, 2, 3, 4, 5, 6, 7);
//可以多次调用,不论调用多少次this指向的都是person
bindFun();
bindFun(111,222,333);

边栏推荐
猜你喜欢
随机推荐
golang 服务平滑重启小结
minikube与kubectl版本不一致问题
单片机裸机编程中实用驱动分享
【Android安全】AOSP源码在线阅读
DAY5-深度学习100例-卷积神经网络(CNN)天气识别
关于单例模式
ctP2ISP:使用卷积和数据增强的转换器预测蛋白质-蛋白质相互作用位点
HCIA --- VLAN实验报告
List、Set、Map、Queue、Deque、Stack遍历方式总结
seata内部是使用redisson的分布式锁来实现的吗?
大型直播平台应用架构浅谈
超大Excel文件的写入
BLE安全之配对流程剖析(1)
Zigbee常见错误问题汇总
网络安全笔记第一天day1
动手学数理统计(2)
快速排序
Task03:PyTorch可视化
Integer缓存池
文件上传场景
![Monorepo[单一代码库] 与MicroService[微服务] 架构](/img/2e/0d7f8fbfd778ae27001dd8e7e64b94.jpg)








