bind / call / apply

JavaScript 🟡 Mid

Définition

Méthodes de Function.prototype pour contrôler this. call(ctx, ...args) et apply(ctx, [args]) appellent immédiatement. bind(ctx, ...args) retourne une nouvelle fonction avec this lie.

Analogie

call = téléphoner a quelqu'un maintenant. apply = idem mais tu lis la liste des courses. bind = enregistrer le numéro en favori pour appeler plus tard.

Exemple de code

function greet(msg) { return `${msg}, ${this.name}`; }
const user = { name: 'Bob' };
greet.call(user, 'Hi');     // 'Hi, Bob'
greet.apply(user, ['Hi']);  // 'Hi, Bob'
const bound = greet.bind(user);
bound('Hey');               // 'Hey, Bob'

Cas d'usage

Fixer le this dans les callbacks, emprunter des méthodes d'un autre objet, partial application.

#core#interview

En entretien

  1. Explique-moi la différence entre call, apply et bind.

    call et apply appellent la fonction immédiatement en fixant this, la seule différence étant que call prend les arguments un par un et apply une liste. bind, lui, ne l'appelle pas tout de suite : il retourne une nouvelle fonction avec this déjà lié, comme enregistrer un numéro en favori pour appeler plus tard.

  2. Quand est-ce que tu utiliserais bind plutôt que call ou apply ?

    Quand je dois fixer le this d'une fonction pour un usage différé, par exemple un callback ou emprunter une méthode d'un autre objet. call et apply servent plutôt quand je veux exécuter tout de suite avec ce contexte.

  3. Donne-moi un exemple concret où bind sert dans du code réel.

    Dans l'exemple, bound = greet.bind(user) crée une fonction où this vaut toujours user, qu'on peut appeler plus tard avec bound('Hey'). C'est typiquement utile pour fixer le this d'un callback ou faire de la partial application.

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre