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

【前端面试】call、apply 、bind、箭头函数

函数除了传参,还有一个调用上下文this,使用call、apply 、bind可以改变函数的this

在实际开发中,选择使用 callapply 还是 bind 取决于你的具体需求和场景。以下是一些使用这些函数的常见情况:

1. 使用 call 的情况:

  • 当你需要调用一个函数,并且需要明确指定 this 的上下文,同时参数已知且数量确定。
  • 当你想要调用一个函数,并且希望按照顺序传递参数。

示例:调用一个构造函数,同时指定 this 的上下文。

function Person(name,work) {this.name = name;this.work =work;const obj= this;console.log({obj})
}const alice = Person.call({ age: 25 }, 'Alice','coder'); // 使用call指定this上下文和参数

在这里插入图片描述

2. 使用 apply 的情况:

  • 当你有一个参数数组,并且想要将这个数组中的元素作为参数传递给一个函数。
  • 当你需要调用一个函数,但是参数数量不确定或者参数存储在数组中。

示例:使用 Math.max 函数找出数组中的最大值。

const fruits = {max:undefined}const numbers = [5, 8, 10, 3, 6];function findMax(numbers) {this.max=Math.max(numbers);const obj= this;console.log({obj})return this.max }const maxNumber = findMax.apply(fruits, numbers,[90]);console.log(maxNumber,fruits)

在这里插入图片描述

3. 使用 bind 的情况:

  • 当你需要创建一个新的函数,并且想要预先绑定 this 的上下文,同时保留参数的灵活性。
  • 当你想要延迟执行函数,或者将函数作为回调传递给其他函数,同时保持特定的 this 上下文。
  • 当你想要实现函数柯里化(curry)或部分应用(partial app

http://www.mrgr.cn/news/5086.html

相关文章:

  • 【Linux】实现三个迷你小程序(倒计时,旋转指针,进度条)
  • vivado RPM
  • 基于UDP的网络聊天室
  • android——workermanager
  • 基于Python的mediapipe和opencv的人体骨骼、人体姿态关键点的实时跟踪项目
  • 推荐一款功能全面的层次化笔记应用,支持自由拖拽、缩放、旋转,可视化非常牛逼(附源码)
  • 证书学习(二)搞懂 keystore、jks、p12、pfx、crt、csr、pem文件的区别
  • Flutter-自适用高度PageView
  • TTS 文本 vs SSML
  • CR-NeRF 代码eval.py解析
  • 弹射无人机和筒射无人机技术区别详解
  • 后端给前端传递数据形式:广播 单播以及组播
  • EDKII之安全启动详细介绍
  • uniapp中switch和select组件阻止chane事件冒泡的方法
  • 科研绘图系列:Python语言时间趋势图
  • vue使用v-html保留原内容的缩进和换行
  • 预约咨询小程序搭建开发,uniapp前端,PHP语言开发
  • rabbitMQ安装与简单demo
  • EmguCV学习笔记 VB.Net 第6章 形状操作
  • Scratch编程环境:探索暗模式与可访问性选项的创新之路