ForgeFrontend — Prepare, Practice, Crack
Secure checkout
Lifetime access
Instant Drive delivery
Free updates forever

Prepare · Practice · Crack

call vs apply vs bind in JavaScript

All three let you set `this` explicitly — the difference is arguments and timing.

The difference

call(ctx, a, b) invokes now with args listed. apply(ctx, [a, b]) invokes now with an args array. bind(ctx, a) returns a NEW function with this permanently fixed (and optional pre-filled args) — it doesn't invoke.

intro.call(p, "FE");
intro.apply(p, ["Lead"]);
const bound = intro.bind(p); bound("Mentor");

When to use each

Use call/apply to invoke immediately with a chosen this; with spread, apply is rarely needed (fn(...args)). Use bind to create a function with this fixed for later — e.g. event handlers or partial application.

Master this and binding

call/apply/bind, the four this rules and the closures behind them — in the JavaScript Interview Kit.

⚡ Get the JavaScript Interview Kit → ₹299

Frequently asked questions

Which is used most today?
bind, for fixing this on callbacks. call/apply are less common now that spread handles argument arrays.
Do these work on arrow functions?
No — arrow functions ignore call/apply/bind for this; they capture it lexically.

Full kit

JavaScript Interview Kit · ₹299

Get it →