news 2026/4/23 20:43:06

面试官 : “ 请你说一下 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:53:31

ModelScope终极部署指南:从零到精通的完整实战手册

ModelScope终极部署指南:从零到精通的完整实战手册 【免费下载链接】modelscope ModelScope: bring the notion of Model-as-a-Service to life. 项目地址: https://gitcode.com/GitHub_Trending/mo/modelscope 想要在本地环境中高效运行ModelScope的700先进…

作者头像 李华
网站建设 2026/4/23 14:45:30

为什么你的TS视频总是卡顿?3个实用技巧彻底解决播放难题

为什么你的TS视频总是卡顿?3个实用技巧彻底解决播放难题 【免费下载链接】alist alist-org/alist: 是一个基于 JavaScript 的列表和表格库,支持多种列表和表格样式和选项。该项目提供了一个简单易用的列表和表格库,可以方便地实现各种列表和表…

作者头像 李华
网站建设 2026/4/23 13:04:04

OpenAI 20B无审查MOE:80T/S全能AI编程神器

OpenAI 20B无审查MOE:80T/S全能AI编程神器 【免费下载链接】OpenAi-GPT-oss-20b-abliterated-uncensored-NEO-Imatrix-gguf 项目地址: https://ai.gitcode.com/hf_mirrors/DavidAU/OpenAi-GPT-oss-20b-abliterated-uncensored-NEO-Imatrix-gguf OpenAI推出的…

作者头像 李华
网站建设 2026/4/23 17:53:27

Stability AI模型下载实战:从零到一的避坑指南

Stability AI模型下载实战:从零到一的避坑指南 【免费下载链接】generative-models 是由Stability AI研发的生成模型技术 项目地址: https://gitcode.com/GitHub_Trending/ge/generative-models 你是否曾经满怀期待地开始下载AI模型,却在几个小时…

作者头像 李华
网站建设 2026/4/23 3:38:38

AIOpsLab:自动化运维故障演练的终极指南 - 快速上手与实战应用

AIOpsLab:自动化运维故障演练的终极指南 - 快速上手与实战应用 【免费下载链接】AIOpsLab 项目地址: https://gitcode.com/gh_mirrors/ai/AIOpsLab 想要构建智能运维系统却苦于缺乏真实故障数据?AIOpsLab正是您需要的开源解决方案。这个专为自动…

作者头像 李华