js中call和apply的区别

JavaScript中call与apply的区别 文章目录一 使用:二 异同三 两个方法该如何选择? 一 使用: function log (...args) { console.log(...args) } function log () { console.log.apply(console, arguments) } log(1, 2, 3) log.bind() call() 定义:调用一个对象的一个方法,以另一个对象替换当前对象。 调用call的对象必须是个函数function call 阅读详情

在JavaScript中,call 和 apply 都是函数对象的方法,它们的主要用途是调用一个函数,并具有一个指定的this值,以及作为单独参数列出的一个或多个参数。尽管这两个方法的功能相似,但它们在处理参数的方式上有所不同。

 

区别

参数传递方式:

call 方法接受一个参数列表,即函数内部的this值,后跟函数本身的参数(作为单独的参数)。

apply 方法接受两个参数:第一个参数是函数内部的this值,第二个参数是一个数组或者类数组对象,其中的数组元素将作为单独的参数传给function。

使用场景:

当你知道要传递给函数的参数个数时,使用call通常更直观。

当你有一个参数数组并希望将其传递给函数时,使用apply更方便。

例子

使用 call

javascript

function greet(greeting, punctuation) {

  return greeting + ', ' + this.name + punctuation;

}

 

var obj = {name: 'World'};

 

console.log(greet.call(obj, 'Hello', '!')); // 输出 "Hello, World!"

 

使用 apply

javascript

function greet(greeting, punctuation) {

  return greeting + ', ' + this.name + punctuation;

}

 

var obj = {name: 'World'};

var args = ['Hello', '!'];

 

console.log(greet.apply(obj, args)); // 输出 "Hello, World!"

 

 

在上面的例子中,call 和 apply 都用于调用greet函数,并将obj作为this的上下文。然而,它们处理参数的方式是不同的。在call的例子中,参数是直接作为单独的参数传递的,而在apply的例子中,参数是作为数组传递的。

 

js的apply,call,bind区别 call()数组和参数列表在JavaScript中是两个不同的概念,但它们可以相互转换和使用。下面我会解释它们的区别,并给出相应的例子。 阅读详情

相关推荐

力扣(Leetcode)第1题:两数之和(C语言版本)

题目: 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。 示例 2: 输入:nums = [3,2,4], target = 6

qq_39855356的博客 3320

JS中call和apply区别有哪些

一、call和apply区别   传递参数的方式。用法上不同,主要是参数不完全同   2、具体说明 (1)、B.Function.call(A,arg,arg) 这个例子是讲A对象“调用”B对象的Function(某个具体的方法)。 注意call方法中的参数arg: a) arg的个数为零或多个; b) arg可以是任何类型,包括Array。 call在这里译为“调用”,在JS

whaxrl的专栏 3018

Qt制作大数据可视化大屏展示电子看板

Qt制作大数据可视化大屏展示电子看板 解决当前最火的大数据可视化大屏展示,整个项目通过Qt开发,集成了QML/QChart/ECharts及自定义控件等模块,所有的可视化控件都可以集成到其中。可以随意增加和减少模块,各个模块可以随意拖拽,整体可以个性化布局。模块标题栏可自定义,包括标题文本信息、文本颜色、宽度/高度、背景颜色、按钮个数等功能,满足各个样式需求。 实例中主要展示了现成的一些仪表盘...

Qt自定义控件及应用开发 7707

js之call()和apply()的区别

call可以传入多个参数,从第二参数开始会映射到func的参数上。apply方法最多两个参数,第二参数是数组或者类数组。:调用一个对象的一个方法,用另一个对象替换当前对象。:改变执行上下文(this)

辽辽无期的博客 648

【FPGA】高效捕捉信号边沿的硬件实现技巧

本文深入探讨了FPGA设计中高效捕捉信号边沿的硬件实现技巧。核心在于通过“打两拍”同步器处理亚稳态风险,并详细解析了上升沿、下降沿及双边沿检测的基础原理与Verilog实现。文章进一步介绍了脉冲展宽、数字滤波等高级优化方案,并结合UART起始位检测与按键消抖等实战场景,提供了可靠的代码范例与调试心得,帮助工程师构建稳定可靠的边沿检测模块。

weixin_29165465的博客 227

STM32开发者必看:如何在正点原子探索者开发板上快速移植CANopenNode协议栈

本文为STM32开发者提供了在正点原子探索者开发板上快速移植CANopenNode协议栈的实战指南。文章详细介绍了从环境准备、硬件抽象层适配到协议栈初始化与测试的全过程,并分享了PDO配置与性能优化等关键技巧,帮助开发者高效实现CANopen标准化通信。

weixin_29173777的博客 465

JavaScript中的 Call 和 Apply

1. call 和 apply的区别 Function.prototype.call 和 Function.prototype.apply都是非常常用的方法,它们的作用一模一样,区别仅在于传入参数形式的不同。 apply接受两个参数,第一个参数指定了函数体内 this 对象的指向,第二个参数为一个带下标的集合,这个集合可以为数组,也可能为类数组,apply 方法把这个集合中的元素作为参数传递给.........

分享前端工程化、AI 应用、Agent 开发与大模型实践! 7334

2021年全国职业院校技能大赛高职组网络系统管理赛项

S1 Ruijie(config)#switch virtual domain 1 Ruijie(config-vs-domain)#switch 1 Ruijie(config-vs-domain)#switch 1 priority 150 Ruijie(config-vs-domain)#switch 1 description S1 Ruijie(config-vs-domain)#exit Ruijie(config)#vsl-port Ruijie(config-vsl-port)#po

bfq05234214的博客 1134

浅谈JS中call()和apply()的区别和用途?

在JavaScript中,this指向问题一直是一个老生常谈的问题。很多小伙伴应该都知道在js中,this指向哪里通常是在函数调用的时候才确定的,简单来说就是谁调用了函数则this指向谁,当然,这只是狭义的,更加详细的介绍大家可以去看《你不知道的Javascript》这本书。call()和apply()这两个方法的作用可以简单归纳为改变this指向,从而让我们的this指向不在是谁调用了函数就指向谁。

u010227042的博客 1859

YOLOv11 TensorRT极致加速:C++部署性能优化完全指南

购买即可解锁300+YOLO优化文章,并且还有海量深度学习复现项目,价格仅需两杯奶茶的钱,别人有的本专栏也有!

LXY_LOVE36的博客 118

硬方案——几种实用的恒流源电路设计方案,敬请收藏(运放、三极管在手,让你玩出多种花样)

0 引言 我们在信号测量、供电等应用场景时常会涉及到使用恒流源,以前觉得恒流源挺神奇的,研究了下实现方案,其实也没有多么高深(这里讨论的仅限于用在信号测量中的小电流恒流源设计),这里给出几个实用的恒流源电路设计方案。 1 恒流源电路设计 (1)使用三极管搭建的恒流源 (2)使用运放搭建的恒流源 (3)使用恒流二极管搭建的恒流源 pt100恒流源测温电路图_电子技术_电工之家 ...

数字世界 万物互联 9524

call和apply的区别

一、方法定义1、call方法:语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象。 参数 thisObj 可选项。将被用作当前对象的对象。 arg1, arg2, , argN 可选项。将被传递方法参数序列。说明 call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的

yer不一样的博客 2753

通过miniconda conda安装jupyer的时候报错: InvalidArchiveError(“Error with archive

摘要:本文针对Windows系统使用Conda时出现的InvalidArchiveError错误(文件路径过长或压缩包损坏),提供了解决方案。建议以管理员身份运行PowerShell并执行命令启用长路径支持(LongPathsEnabled),然后重启电脑或终端。作者通过该方法成功解决了jupyter安装问题。附有错误截图和解决后的成功截图。

猿小白的博客 788

Js(Javascript)的apply call 和bind区别

apply、call 和 bind 是用于调用函数的三种不同方式,它们的主要区别在于函数调用时的上下文(this 关键字)以及参数传递的方式。call 和 apply 是用于立即调用函数并设置 this 上下文的方法,它们的主要区别在于参数传递的方式。bind 不会立即执行函数,而是创建一个新的函数,将 this 绑定到指定的上下文。并可选地预设参数,然后可稍后调用这个新函数。 参考文档:Js(Javascript)的apply call 和bind区别-CJavaPy是要设置为函数内部的 this 的对象

weixin_42098295的博客 534

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

javascript 中 bind、call和apply的区别

本文详细讲解了javascript 中 bind call apply 的区别以及使用场景和使用方法

Sherry Tian的博客 924

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

node.js里的bind,apply, call的区别是什么

bind:返回一个新函数,this绑定但不立即执行。apply:立即执行函数,this绑定,参数以数组形式传递。call:立即执行函数,this绑定,参数逐个传递。

seek for me 690

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【js面试题】一文搞懂JavaScript 中 call、apply、bind 的深度解析与区别

在 JavaScript 中,call、apply 和 bind 这三个方法虽然都与函数的 this 绑定和参数传递有关,但它们在功能和使用方式上存在着明显的区别。call 和 apply 主要用于立即调用函数并改变 this 指向,它们的区别仅在于参数传递方式,call 逐个传递参数,apply 以数组形式传递参数。而 bind 方法则是创建一个新的函数,在新函数被调用时才进行 this 绑定,并且可以预先固定部分参数。在实际编程中,根据不同的需求可以灵活选择使用这三个方法。

weixin_52814911的博客 1416

js中apply、call和bind的区别

在JS中,这三者都是用来改变函数的this对象的指向的,他们有什么样的区别呢。 在说区别之前还是先总结一下三者的相似之处: 1、都是用来改变函数的this对象的指向的。 2、第一个参数都是this要指向的对象。 3、都可以利用后续参数传参。 那么他们的区别在哪里的,先看一个例子。 var xw = { name : "小王", gender : "男", age : 24, say : function() { alert(this.name + " , " + t...

輕描淡寫的博客 354

JavaScript 中 call 和 apply 的用法与区别

📖在JavaScript中,call和apply是两个非常重要的函数方法,它们都用于改变函数执行时的this指向。虽然它们的功能相似,但在使用方式上有一些区别。

李赛赛的专栏 993

【js】javascript中call()和apply()方法的区别

如果没接触过动态语言,以编译型语言的思维方式去理解javaScript将会有种神奇而怪异的感觉,因为意识上往往不可能的事偏偏就发生了,甚至觉得不可理喻.如果在学JavaScript这自由而变幻无穷的语言过程中遇到这种感觉,那么就从现在形始,请放下的您的”偏见”,因为这对您来说绝对是一片新大陆,让JavaScrip 好,言归正传,先理解JavaScrtipt动态变换运行时上下文特性,这种特性主

PHP在线开发笔记 1737

JS 中bind、call、apply的区别

和call/apply的功能类似,只不过bind修改this指向之后,返回的新函数不会自动执行,如果有需要,需要手动执行;而call和apply改变this之后,返回的新函数会自动执行。方法的功能:修改原函数的this指向,并执行这个新函数。call和aply的第二个(或大于2个)参数为fn传入的参数。用来修改函数的执行上下文(this)。执行时一个对象可以使用另一个对象的方法。

魏晋- 1168

js/javascript : apply,call,bind三者的使用与区别

参考: apply,call,bind三者的使用与区别 每个函数都包含两个非继承而来的方法:call()和apply(); 在JavaScript中,call和apply作用是一样的,都是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部this的指向。 一、方法介绍: interface NewableFunction extends Function { /** * 以指定对象作为 this 值,以指定[数组]的元素作为参数调用函数。

火星男孩的分享空间 283

JavaScript 中 call、apply 和 bind 的区别

这三个方法都是 JavaScript 中用于改变函数执行时this指向的方法,但它们在使用方式和效果上有重要区别。

qq_48763502的博客 717

js Apply 和call 的作用及区别

** Apply 和call 的作用及区别 ** Call和apply的作用都是强制改变this的指向 Call和apply的区别在于传参时的不同,call和apply的的第一个参数都是对象,第二个参数call传的是单个参数, 而apply传的是一个数组或者是一个参数 当this没有指向时,this指向window function show(a, b) { console.log(this);//window console.log(a,b);//1,2 } show(1,2); 当用

dongruanxiaoyu的博客 1262

javascript中call与apply的区别

javascript中call与apply的区别 欢迎访问我的博客,祝码农同胞们早日走上人生巅峰,迎娶白富美~~~ JavaScript中的每一个Function对象都有一个apply()方法和一个call()方法,它们的语法分别为: 12345/*apply()方法*/function.apply(thisObj[...

王工头的博客 107
上一篇: css sprites如何使用
下一篇: css都有哪些选择器怎么使用
codedadi
博客等级 码龄3年 1330粉丝 141原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值