javaSccript---call()、 bind()、 apply()的区别

news/2024/12/13 17:05:41/

call()、apply()、bind() 都是用来重定义 this 这个对象的

语法:

function.apply(thisArg, [argsArray])//argsArray 是一个可选的数组

function.call(thisArg, arg1, arg2, ...)//arg1、arg2、... 是将传递给函数的参数列表

function.bind(thisArg, arg1, arg2, ...)//arg1、arg2、... 是一些可选的参数,这些参数将在调用新函数时作为参数列表传递给原函数

function test(a, b) {console.log(a + b);
}
test.call({ name: "call" }, 1, 2); //3
test.apply({ name: "apply" }, [2, 3]); ///5
const test1 = test.bind({ name: "bind" }, 4);
console.log(test1); //[Function: bound test]
test1(2); //6

相同点:第一个参数thisArg 表示函数要绑定的上下文,是用来改变函数this指向的,第二个参数是是用于传参

不同点:

call 和apply可以直接调用,bind不会立即调用函数,而是会返回一个新的函数

call和bind可以传递多个参数,apply只能传递一个参数 (数组或者伪数组)

JavaScript 中 call()、apply()、bind() 的用法 | 菜鸟教程其实是一个很简单的东西,认真看十分钟就从一脸懵B 到完全 理解! 先看明白下面: 例 1 obj.objAge; // 17 obj.myFun() // 小张年龄 undefined 例 2 shows() // 盲僧 比较一下这两者 this 的差别,第一个打印里面的 this 指向 obj,第二个全局声明的 shows() 函数 this 是 window ; 1,call()、appl..https://www.runoob.com/w3cnote/js-call-apply-bind.html


http://www.ppmy.cn/news/46290.html

相关文章

软考-项目进度管理(十)

10.2项目进度管理过程 (P298) 10.2.1过程概述 项目进度管理过程包括:(背口诀:规定排估制控) 过程一定要按第四版来记!! 规划进度管理:为了规划进度管理:规划、编制、管理、执行和控制项目进度,制定政策、程序和文档。定义活动: (把工作包分解为活动) 识别和记录为…

windows如何编译各种版本boost库

环境 系统:windows11boost版本:boost-1.70编译器版本:Visual Studio 2019 1. 参数分析 –without:选择不编译某个库 例如不编译python模块--without-python –toolset:指定编译工具 例如指定vs2019--toolsetmsvc-14…

ei会议被检索的时间一般多久,中文期刊论文有doi吗

目录 ei会议被检索的时间一般多久 中文期刊论文有doi吗 中文期刊论文没有oi怎么办

CentOS常用命令50个含示例

以下是 CentOS 下常用命令及其详细说明: rsync:文件同步工具,支持本地和远程同步。例如:将本地目录 /home/user 同步到远程主机的 /backup 目录:rsync -av /home/user/ userremote:/backup/。iptables:防火…

pc端和移动端复制粘贴问题

选择了HTML5的一个属性contenteditable。处理了复制内容插入的样式问题。 加上了paste"optimizePasteEvent"事件的监听来进行处理。 html输入框部分&#xff1a; <div ref"textarea" class"textarea" id"textarea" contenteditab…

Sentinel服务

1&#xff0c;安装Sentinel 2&#xff0c;引入依赖 spring-cloud-starter-alibaba-sentinel 3&#xff0c;自定义资源&#xff0c;添加注解&#xff1a; SentinelResource(value "getByCode",blockHandler "handleException") 4&#xff0c;配置文件中添…

最优化方法Python计算:函数向量和函数矩阵

函数 f ( x ) , x ∈ R n f(\boldsymbol{x}),\boldsymbol{x}\in\text{ℝ}^n f(x),x∈Rn的梯度 ∇ f ( x ) ( ∂ f ∂ x 1 ∂ f ∂ x 2 ⋮ ∂ f ∂ x n ) \nabla f(\boldsymbol{x})\begin{pmatrix}\frac{\partial f}{\partial x_1}\\\frac{\partial f}{\partial x_2}\\\vdots\…

ThingsBoard开源物联网平台智慧农业实例快速部署教程(Ubuntu、CentOS适用)

ThingsBoard部署教程文档 文章目录 ThingsBoard部署教程文档1. JDK环境安装2. 安装thingsBoard2.1 ThingsBoard软件包安装2.2 PostgreSQL安装2.3 PostgreSQL初始化配置 3. 修改ThingsBord的配置4. 运行安装脚本测试5. 访问测试6. 导入一个仪表盘库6.1 导出仪表盘并导入自己的项…