前端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://xiahunao.cn/news/2777425.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

NOR Flash 存内计算芯片技术探幽

文章目录 NOR Flash 存内计算芯片技术探幽1. 核心技术与芯片架构的独特设计2. 强大性能与多样化应用场景3. 技术前景与面临挑战4. 模拟计算精度的突破5. 工具链完善与应用生态建设6. 跨层协同设计的推动7. 技术突破与挑战8. 工具链的完善与生态系统建设9. 跨层协同设计的加强10…

(全网最全)微型计算机原理与接口技术第六版课后习题答案-周荷琴,冯焕清-第10章模数(A/D)和数模(D/A)转换-中国科学技术大学出版社

含有“AI:”开头的题目的答案是问chat的,看个乐就行,不一定正确 大年初一,赶着把最后两篇文章发完,嘻嘻 1。包含A/D和D/A的实时控制系统主要由哪几部分组成?什么情况下要用多路 开关? 第二段文字是在旧版第四版答案…

idea自带database连接mysql失败问题

idea2023.1版连接mysql失败 DBMS: MySQL (ver. 5.7.13) Case sensitivity: plainexact, delimitedexact Driver: MySQL Connector Java (ver. mysql-connector-java-5.1.47 ( Revision: fe1903b1ecb4a96a917f7ed3190d80c049b1de29 ), JDBC4.0) [08S01]Communications link fai…

Stata实证命令代码汇总

Stata代码命令汇总 数据内容:包括数据导入和管理、数据的处理、描述性统计、相关性分析、实证模型、内生性解决、检验分析、结果导出 具体如下: 一、数据导入和管理:数据导入、数据导出 二、数据的处理:生成新变量、格式转换、…

安卓服务的常见问题,性能优化以及应用场景剖析

一、引言 在安卓开发中,服务(Service)扮演着至关重要的角色,它们在没有用户界面的情况下,为用户提供了长时间的后台任务执行能力。本文将探讨服务常见问题、优化策略、应用场景以及开发过程中应注意的事项。 二、应用场…

c#安全-nativeAOT

文章目录 前记AOT测试反序列化Emit 前记 JIT\AOT JIT编译器(Just-in-Time Complier),AOT编译器(Ahead-of-Time Complier)。 AOT测试 首先编译一段普通代码 using System; using System.Runtime.InteropServices; namespace co…

如何解决利用cron定时任务自动更新SSL证书后Nginx重启问题

利用cron定时任务自动更新SSL证书后,用浏览器访问网站,获取到的证书仍然是之前的。原因在于没有对Nginx进行重启。 据说certbot更新完成证书后会自动重启Nginx,但显然经我检测不是这回事儿。 所以我们需要创建一bash脚本,然后定时调用这个脚…

第十七篇【传奇开心果系列】Python的OpenCV库技术点案例示例:自适应阈值二值化处理图像提取文字

传奇开心果短博文系列 系列短博文目录Python的OpenCV库技术点案例示例系列短博文目录前言一、自适应阈值二值化处理图像提取文字轮廓的初步示例代码:二、扩展思路介绍三、调整自适应阈值二值化的参数示例代码四、对二值化图像进行形态学操作示例代码五、使用轮廓特征进行筛选示…

跟着cherno手搓游戏引擎【23】项目维护、2D引擎之前的一些准备

项目维护: 修改文件结构: 头文件自己改改就好了 创建2DRendererLayer: Sandbox2D.h: #pragma once #include "YOTO.h" class Sandbox2D :public YOTO::Layer {public:Sandbox2D();virtual ~Sandbox2D() default;virtual void O…

TCP和UDP相关问题(重点)——7.TCP的流量控制怎么实现的?

流量控制就是在双方通信时,发送方的速率和接收方的速率不一定是相等的,如果发送方发送的太快,接收方就只能把数据先放到接收缓冲区中,如果缓冲区都满了,那么处理不过来就只能丢弃,所以需要控制发送方的速率…

网络安全05-sql-labs靶场全网最详细总结

目录 一、环境准备,sql注入靶场环境网上全是保姆教程,自己搜搜,这个不进行描述 二、注入方式了解 三、正式开始注入闯关 3.1第一关(字符型注入) 3.1.1首先先测试一下字符 ​3.1.2尝试单引号闭合看输出什么 3.1.3…

代码随想录算法训练营Day52|300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组

目录 300.最长递增子序列 前言 思路 算法实现 674. 最长连续递增序列 前言 思路 算法实现 718. 最长重复子数组 前言 思路 总结 300.最长递增子序列 题目链接 文章链接 前言 在结束代码随想录中的股票问题后,又是一个新的专题,本题是子序列问…

每日五道java面试题之java基础篇(二)

第一题. 为什么说 Java 语⾔“编译与解释并存”? ⾼级编程语⾔按照程序的执⾏⽅式分为编译型和解释型两种。 简单来说,编译型语⾔是指编译器针对特定的操作系统将源代码⼀次性翻译成可被该平台执⾏的机器码;解释型语⾔是指解释器对源程序逐…

基于opencv-python模板匹配的银行卡号识别(附源码)

目录 介绍 数字模板处理 银行卡图片处理 导入数字模板 模板匹配及结果 介绍 我们有若干个银行卡图片和一个数字模板图片,如下图 我们的目的就是通过对银行卡图片进行一系列图像操作使得我们可以用这个数字模板检测出银行卡号。 数字模板处理 首先我们先对数…

Swift Combine 使用 sink, assign 创建一个订阅者 从入门到精通九

Combine 系列 Swift Combine 从入门到精通一Swift Combine 发布者订阅者操作者 从入门到精通二Swift Combine 管道 从入门到精通三Swift Combine 发布者publisher的生命周期 从入门到精通四Swift Combine 操作符operations和Subjects发布者的生命周期 从入门到精通五Swift Com…

Java集合框架(包装类、泛型)

前言: 本篇文章我们来讲解Java中的集合框架,就相当于车轮子。Java是面向对象的语言,所以相对于C语言有自身优势,就比如现成的数据结构(比如栈,队列,堆等)。Java的集合框架大家也不用…

使用AI开发一个红包封面生成器

使用 VUE3,和 Express 开发一个红包封面。 生成效果如下 体验地址:https://hongbao.digitalmodel.top/

Web Services 服务 是不是过时了?创建 Web Services 服务实例

Web Services 是不是过时了? 今天是兔年最后一天,先给大家拜个早年 。 昨天上午视频面试一家公司需要开发Web Services 服务,这个也没有什么,但还需要用 VB.net 开发。这个是多古老的语言了,让我想起来了 10年 前 写 …

无人机应用场景和发展趋势,无人机技术的未来发展趋势分析

随着科技的不断发展,无人机技术也逐渐走进了人们的生活和工作中。无人机被广泛应用于很多领域,例如遥感、民用、军事等等。本文将围绕无人机技术的应用场景和发展趋势,从多角度展开分析。 无人机技术的应用场景 无人机在遥感方面的应用&…

C++之RTTI实现原理

相关系列文章 C无锁队列的原理与实现 如何写出高质量的函数?快来学习这些coding技巧 从C容器中获取存储数据的类型 C之多层 if-else-if 结构优化(一) C之多层 if-else-if 结构优化(二) C之多层 if-else-if 结构优化(三) C之Pimpl惯用法 C之RTTI实现原理 目录 1.引言…