news 2026/4/25 12:22:43

面试官 : “ 请你说一下 call、apply、bind 的区别 ? ”

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
面试官 : “ 请你说一下 call、apply、bind 的区别 ? ”


call、apply、bind
的核心区别

这三个方法的作用都是改变函数的this指向,他们三个的第一个参数是要绑定给函数的this对象。但在传参方式和执行时机上有明显不同。

详细对比

特性callapplybind
this 绑定后是否立即执行立即执行立即执行返回一个新函数,需手动调用才执行
传参方式逐个传递参数以数组形式传递参数预先传递部分参数(柯里化),剩余参数在调用时传递
返回值函数执行结果函数执行结果新的绑定函数

代码示例

1. call 用法

function greet(name) { console.log(`${this.greeting}, ${name}!`); } const obj = { greeting: 'Hello' }; greet.call(obj, 'Alice'); // 输出:Hello, Alice!

2. apply 用法

function sum(a, b) { return a + b; } const numbers = [1, 2]; const result = sum.apply(null, numbers); // 输出:3

3. bind 用法

function greet(name) { console.log(`${this.greeting}, ${name}!`); } const obj = { greeting: 'Hi' }; const boundGreet = greet.bind(obj); boundGreet('Bob'); // 输出:Hi, Bob!

核心场景

  • call:适合参数数量明确的场景,如继承、借用方法。
  • apply:适合参数数量不确定或已存在数组的场景,如数组求最大值Math.max.apply(null, [1, 2, 3])
  • bind:适合需要延迟执行或预先绑定this的场景,如事件回调、定时器。

这三个方法的作用都是改变函数的this指向,call , apply , bind 他们三个的第一个参数是要绑定给函数的this对象。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 12:45:08

科哥定制FunASR镜像:中文语音识别新选择

科哥定制FunASR镜像:中文语音识别新选择 1. 为什么需要一个更高效的中文语音识别方案? 在日常开发和实际应用中,语音转文字(ASR)技术已经成为内容创作、会议记录、客服系统等场景的刚需。然而,很多开发者…

作者头像 李华
网站建设 2026/4/24 21:24:42

gpt-oss-20b-WEBUI使用心得:低门槛高效率的推理体验

gpt-oss-20b-WEBUI使用心得:低门槛高效率的推理体验 你是否曾因为担心数据隐私,而不敢将敏感内容交给云端AI处理?又或者在没有网络的环境下,迫切需要一个能写代码、解数学题、甚至帮你润色文档的智能助手?现在&#x…

作者头像 李华
网站建设 2026/4/24 19:05:17

Z-Image-Turbo_UI界面显存占用低,16G显卡流畅运行

Z-Image-Turbo_UI界面显存占用低,16G显卡流畅运行 在AI图像生成领域,显存瓶颈一直是制约本地部署的核心问题。许多开发者手握RTX 3090或4090这类16GB显存的消费级显卡,却因主流模型动辄24GB以上的内存需求而被迫止步。有没有一种方案&#xf…

作者头像 李华
网站建设 2026/4/24 4:42:18

Ruffle扩展更新后网页崩溃?5个实用修复方案帮你快速恢复

Ruffle扩展更新后网页崩溃?5个实用修复方案帮你快速恢复 【免费下载链接】ruffle A Flash Player emulator written in Rust 项目地址: https://gitcode.com/GitHub_Trending/ru/ruffle 最近不少Chrome用户发现安装了Ruffle扩展后,网页频繁出现白…

作者头像 李华
网站建设 2026/4/24 12:05:10

CoTracker终极部署指南:从零开始掌握视频点跟踪技术

CoTracker终极部署指南:从零开始掌握视频点跟踪技术 【免费下载链接】co-tracker CoTracker is a model for tracking any point (pixel) on a video. 项目地址: https://gitcode.com/GitHub_Trending/co/co-tracker 还在为视频中的物体跟踪而烦恼吗&#xf…

作者头像 李华
网站建设 2026/4/24 14:22:31

QtScrcpy终极指南:3分钟实现Android设备跨平台控制

QtScrcpy终极指南:3分钟实现Android设备跨平台控制 【免费下载链接】QtScrcpy QtScrcpy 可以通过 USB / 网络连接Android设备,并进行显示和控制。无需root权限。 项目地址: https://gitcode.com/GitHub_Trending/qt/QtScrcpy QtScrcpy是一款开源的…

作者头像 李华