je traversais un code laissés par certains développeurs et sont venus depuis longtemps révolue à travers ceci:Javascript Function.prototype.bind Je veux vous assurer que je comprends
Function.prototype.binding = function()
{
if(arguments.length < 2 && typeof arguments[0] == "undefined") return this;
var __method = this, args = jQuery.makeArray(arguments), object = args.shift();
return function()
{ return __method.apply(object, args.concat(jQuery.makeArray(arguments))); };
};
et il est référencé ailleurs dans deux ou trois endroits, cette datatables fonction de rappel est representitive:
"fnRowCallback": function (nRow, aData, iDisplayIndex)
{
nRow = this.options.fnRowCallback(nRow, aData, iDisplayIndex);
return nRow;
}.binding(this),
Je pense que ce que cela accomplit est de mettre le ce contexte dans la fonction de l'objet passé dans le .binding; Est-ce exact? Et cette façon de faire est-elle considérée comme une bonne pratique?
Merci, Matthew
OK cela a du sens. J'ai entendu parler de polyfills qui 'améliorent' le moteur javascript jusqu'à ECMASCript 5 (ou en partie de toute façon.) Serais-je mieux de refactoriser le code pour utiliser une bibliothèque plus établie comme ça plutôt que ce code (refactoring par suppression) ? –
Je voudrais personnellement aller avec un 'Function # bind' conforme à l'ECMA (potentiellement-polyfilled) si possible ... pas sûr que ça vaut la peine de changer un vieux projet, cependant. FWIW Je pense qu'il est relativement peu probable que quelque chose soit s'appuyer sur la différence entre 'binding' et' bind' (principalement en utilisant la fonction bound en tant que constructeur). – bobince