Fonction.prototype.application.d'investir des usages?

Je connais parfaitement les usages pour:

Function.prototype.bind.apply(f,arguments)

Explication – Utilisez la méthode de bind origine (si existant) sur f avec des arguments (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]);