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

Javascript 编程基础(4)函数 | 4.3、apply() 与 call() 方法

文章目录

  • 一、`apply()` 与 `call()` 方法
    • 1、核心概念
      • 1.1、`call()` 方法
      • 1.2、`apply()` 方法
    • 2、使用示例
      • 2.1、基本用法
      • 2.2、处理 `this` 指向问题
    • 3、`call()` 与 `apply()` 的区别

一、apply()call() 方法

apply()call() 都是 JavaScript 函数对象的方法,用于显式设置函数执行时的 this并调用函数。这两个方法功能相似,主要区别在于参数传递方式。

1、核心概念

1.1、call() 方法

function.call(thisArg, arg1, arg2, ...)
  • 第一个参数:指定函数内 this 的值
  • 后续参数:逐个传递函数参数

1.2、apply() 方法

function.apply(thisArg, [argsArray])
  • 第一个参数:指定函数内 this 的值
  • 第二个参数:以数组或类数组形式传递参数

2、使用示例

2.1、基本用法

function introduce(lang, experience) {console.log(`${this.name} 开发 ${lang} ${experience}`);
}const dev = { name: '张三' };// call 方式
introduce.call(dev, 'JavaScript', 5); 
// 输出:"张三 开发 JavaScript 5 年"// apply 方式
introduce.apply(dev, ['Python', 3]);
// 输出:"张三 开发 Python 3 年"

2.2、处理 this 指向问题

const obj = {value: 10,getValue: function() {setTimeout(function() {console.log(this.value); // 默认指向全局对象}.call(this), 100); // 强制绑定 this}
};obj.getValue(); // 输出 10

3、call()apply() 的区别

特性call()apply()
参数传递方式逐个参数传递数组形式传递
性能通常更快略慢(需处理数组)
适用场景参数数量已知参数数量动态/不确定
http://www.dtcms.com/a/205156.html

相关文章:

  • Enhanced RTMP H.265(HEVC)技术规格解析:流媒体协议的新突破
  • 如何支持Enhanced RTMP H.265(HEVC)
  • Linux系统下nslookup命令的基本使用
  • Linux锁和互斥锁
  • 读一本书第一遍是快读还是细读?
  • 【算法专题十五】BFS解决最短路问题
  • 04算法学习_209.长度最小的子数组
  • MCP Server开发使用Pixabay网址搜索图片
  • TypeScript 泛型讲解
  • 《微服务架构设计模式》笔记
  • 基于Matlab建立不同信道模型
  • 鸿蒙HarmonyOS 【ArkTS组件】通用属性-背景设置
  • 腾讯游戏安全与高通合作构建PC端游安全新格局
  • Unity异步加载image的材质后,未正确显示的问题
  • 693SJBH基于.NET的题库管理系统
  • Windows Docker笔记-扩展
  • C++ - 仿 RabbitMQ 实现消息队列(3)(详解使用muduo库)
  • docker面试题(5)
  • 【C++ Primer 学习札记】智能指针
  • selenium——元素定位
  • Java 定时任务中Cron 表达式与固定频率调度的区别及使用场景
  • Unity-编辑器扩展-其二
  • auto关键字解析
  • 【算法】滑动窗口(细节探究,易错解析)5.21
  • 使用Vite创建一个动态网页的前端项目
  • IGBT的结电容大小对实际使用有哪些影响,双脉冲测试验证
  • Cmake 使用教程
  • 【时时三省】Python 语言----文件
  • 使用MATLAB输出1000以内所有完美数
  • golang库源码学习——Pond,小而精的工作池库