当前位置: 首页 > 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()
参数传递方式逐个参数传递数组形式传递
性能通常更快略慢(需处理数组)
适用场景参数数量已知参数数量动态/不确定

相关文章:

  • 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——元素定位
  • 淄博 网站制作/免费发seo外链平台
  • wordpress首页html代码/seo推广网址
  • 涿州做网站建设/seo免费优化软件
  • 官方网站营销/媒体平台
  • wordpress批量更换文章的关键字/武汉seo百度
  • 军事新闻最新消息11/新网站应该怎么做seo