You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中bind无输出但apply有输出的原因咨询

为什么使用bind()没有输出,而apply()可以?

这是个很常见的新手疑问,核心在于bind()和apply()的设计初衷完全不同:

  • apply()会立即调用目标函数,同时将函数内部的this绑定为你传入的对象,还能通过第二个数组参数给函数传递参数。
  • bind()则是返回一个新的函数——这个新函数的this已经被固定为你传入的对象,但它不会自动执行,必须手动调用它才会产生效果。

回到你的代码例子:

person.showFullName.bind(anotherPerson); // 仅创建绑定后的新函数,未执行
person.showFullName.apply(anotherPerson); // 立即调用函数,绑定this到anotherPerson

要让bind()产生输出,你需要把它返回的新函数存起来,然后调用它:

// 先创建绑定好上下文的函数
const boundFullName = person.showFullName.bind(anotherPerson);
// 手动调用这个新函数
boundFullName(); // 输出:Rohit Khan

另外补充个小知识点:bind()还支持预先给函数绑定部分参数(也就是柯里化),比如如果你的showFullName有额外参数,也可以在bind的时候提前传入,后续调用时只需要传剩下的参数就行,这也是它和apply/call的一个重要区别。

内容的提问来源于stack exchange,提问作者Ravindra babu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:36:53