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.log
n'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 x
ou y
, parce que nous avons passé ces valeurs lorsque nous avons fait notre liaison.
select = document.querySelector.bind(document)