当前位置: 首页 > news >正文

前端JavaScript篇之call() 和 apply() 的区别?

目录

  • call() 和 apply() 的区别?


call() 和 apply() 的区别?

在JavaScript中,call()和apply()都是用来改变函数中this指向的方法,它们的作用是一样的,只是传参的方式不同。

call()方法和apply()方法的第一个参数都是要改变this指向的对象,只是call()方法的后续参数是一个一个传递的,而apply()方法的后续参数是以数组的形式传递的。

具体来说,使用call()方法时,需要将要传递给函数的参数逐个列举出来,例如:

function sayName(age, gender) {console.log(this.name, age, gender)
}var obj = {name: 'John'
}sayName.call(obj, 20, 'male') // 输出John 20 male

请添加图片描述

而使用apply()方法时,需要将要传递给函数的参数放在一个数组中,例如:

function sayName(age, gender) {console.log(this.name, age, gender)
}var obj = {name: 'John'
}sayName.apply(obj, [20, 'male']) // 输出John 20 male

请添加图片描述

需要注意的是,如果传递的参数是一个数组,可以使用apply()方法将数组展开成一个一个的参数,例如:

function sayName(age, gender) {console.log(this.name, age, gender)
}var obj = {name: 'John'
}var arr = [20, 'male']sayName.apply(obj, arr) // 输出John 20 male

请添加图片描述

持续学习总结记录中,回顾一下上面的内容:
call()方法和apply()方法都是用来改变函数中this指向的方法,它们的作用是一样的,只是传参的方式不同。使用call()方法时,需要将要传递给函数的参数逐个列举出来;使用apply()方法时,需要将要传递给函数的参数放在一个数组中。如果传递的参数是一个数组,可以使用apply()方法将数组展开成一个一个的参数。

http://www.lryc.cn/news/297395.html

相关文章:

  • Java设计模式大全:23种常见的设计模式详解(三)
  • 汇编语言程序设计(二)十六位汇编框架、子程序与堆栈
  • K8S之标签的介绍和使用
  • 网络请求库axios
  • 程序设计语言的组成
  • 论文精读的markdown模板——以及用obsidian阅读网页资料做笔记
  • LCP 30. 魔塔游戏
  • RCE(命令执行)知识点总结最详细
  • [英语学习][27][Word Power Made Easy]的精读与翻译优化
  • Jupyter Notebook如何在E盘打开
  • 显示器校准软件:BetterDisplay Pro for Mac v2.0.11激活版下载
  • 【第六天】c++虚函数多态
  • CGAL::2D Arrangements-3
  • 机器学习--K近邻算法,以及python中通过Scikit-learn库实现K近邻算法API使用技巧
  • Redis 使用 RDB 持久化方式的过程
  • 仰暮计划|“我非常感谢党的领导,作为一名普通百姓,我也愿意为国家的发展继续贡献微薄的力量”
  • 【思科ssh】思科模拟器配置ssh登录
  • python创建pdf文件
  • ubuntu开机报错/dev/nume0n1p2:clean
  • openstack(T版)公有云--Dashboard服务
  • Vue ElementUI中el-table表格嵌套样式问题
  • ssm+vue的校园一卡通密钥管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。
  • docker进阶 问题1
  • 【OpenVINO™】在 MacOS 上使用 OpenVINO™ C# API 部署 Yolov5 (下篇)
  • 使用CHATGPT进行论文写作的缺点和风险
  • 【Android-Gradle】多模块开发中,定义额外属性(全局变量),穿梭在不同的Gradle文件中(kotlin脚本版)
  • React18原理: Fiber架构下的单线程CPU调度策略
  • 个人搜集的gstreamer学习链接
  • Blazor Wasm Gitee 码云登录
  • Android 自定义BaseActivity