Je connais parfaitement les usages pour:
Function.prototype.bind.apply(f,arguments)
Explication – Utilisez la méthode de
bind
origine (si existant) surf
avec desarguments
(dont son premier élément sera utilisé comme contexte)
Ce code peut être utilisé (par exemple) pour créer de nouvelles fonctions via la fonction constructeur avec des arguments
Exemple :
function newCall(Cls) { return new (Function.prototype.bind.apply(Cls, arguments)); }
Exécution:
var s = newCall(Something, a, b, c);
Mais j'ai rencontré celui-ci: Function.prototype.apply.bind(f,arguments)
// échange de mots
Question:
Comme il est difficile de comprendre son sens – dans quels usages / scénario utiliserais-je ce code?
Ceci est utilisé pour corriger le premier paramètre de .apply
.
Par exemple, lorsque vous obtenez la valeur maximale d'un tableau, vous faites:
var max_value = Math.max.apply(null, [1,2,3]);
Mais vous souhaitez que le premier paramètre soit défini comme null
, afin que vous puissiez créer une nouvelle fonction en:
var max = Function.prototype.apply.bind(Math.max, null);
Alors vous pourriez simplement faire:
var max_value = max([1,2,3]);