bind方法返回绑定this和预设参数的新函数而不执行;第一个参数为this绑定对象,后续为前置参数,调用时合并新参数;箭头函数无法通过bind修改this。

JavaScript 中的 bind 方法可以固定函数的 this 值,并预设部分参数,生成一个新函数。它不立即执行原函数,而是返回一个“绑定后”的函数,调用时再执行。
bind 的基本用法:固定 this 和前置参数
bind 接收至少一个参数:第一个是绑定给 this 的对象,后续参数是“预设参数”(也叫柯里化参数)。调用返回的新函数时,预设参数会排在最前面,再拼接新传入的参数。
例如:
function greet(greeting, punctuation) {return `${greeting}, ${this.name}${punctuation}`;
}
const person = { name: 'Alice' };
const sayHello = greet.bind(person, 'Hello');
console.log(sayHello('!')); // "Hello, Alice!"
预设多个参数,支持后续追加
你可以预设任意数量的参数,只要不超过原函数期望的总参数数。剩余参数在调用新函数时传入。
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
立即学习“Java免费学习笔记(深入)”;
- 原函数有 3 个形参,用
bind预设前 2 个 → 新函数只需传第 3 个 - 预设参数为
null或undefined时,this默认指向全局对象(非严格模式)或undefined(严格模式) - 若只想预设参数、不关心
this,可传null或undefined(现代写法常用undefined)
和 call/apply 的区别:不执行,只绑定
call 和 apply 是立即调用并指定 this 与参数;bind 不执行,只返回一个待调用的新函数。这使得 bind 特别适合事件处理、回调封装或配置复用场景。
logWithPrefix('loaded'); // "[APP] loaded"
注意:箭头函数不能用 bind 改 this
箭头函数没有自己的 this,它继承自外层作用域,所以对箭头函数调用 bind 无法改变其 this 值(仍生效于预设参数,但 this 绑定无效)。
因此,需要 this 绑定时,请确保原函数是普通函数(function 声明或 function 表达式)。

















