Depuis les documents MDN sur Function.prototype.bind():
La méthode bind () crée une nouvelle fonction qui, lorsqu'elle est appelée, a son this mot-clé défini sur la valeur fournie, avec une séquence donnée d'arguments précédant ceux fournis lorsque la nouvelle fonction est appelée.
Alors qu'est-ce que cela signifie?!
Eh bien, prenons une fonction qui ressemble à ceci:
var logProp = function(prop) {
console.log(this[prop]);
};
Maintenant, prenons un objet qui ressemble à ceci:
var Obj = {
x : 5,
y : 10
};
Nous pouvons lier notre fonction à notre objet comme ceci:
Obj.log = logProp.bind(Obj);
Maintenant, nous pouvons exécuter Obj.logn'importe où dans notre code:
Obj.log('x'); // Output : 5
Obj.log('y'); // Output : 10
Cela fonctionne, car nous avons lié la valeur de thisà notre objet Obj.
Là où cela devient vraiment intéressant, c'est quand vous liez non seulement une valeur pour this, mais aussi pour son argument prop:
Obj.logX = logProp.bind(Obj, 'x');
Obj.logY = logProp.bind(Obj, 'y');
Nous pouvons maintenant le faire:
Obj.logX(); // Output : 5
Obj.logY(); // Output : 10
Contrairement à avec Obj.log, nous ne devons pas passer xou y, parce que nous avons passé ces valeurs lorsque nous avons fait notre liaison.
select = document.querySelector.bind(document)