Un utente su Stack Overflow ha pubblicato una domanda relativa alla sovrascrittura di una funzione JS nativa. La domanda è qui e questo è il codice:
function throttle(fn, time) {
var handle;
var execute = function() {
handle = null;
fn.apply(this, arguments);
};
var throttled = function() {
if(!handle) {
handle = setTimeout(execute.bind(this), time);
}
};
throttled.toString = function() {
return fn.toString() + "\n// throttled to " + time + "ms";
};
return throttled;
}
var makeAjax = throttle(function(callback) {
$.getJSON("/path", callback);
}, 500);
Ho una buona padronanza (credo) su JavaScript, ma ci sono alcune aree che rimangono molto grigie per me. Mi piacerebbe sapere cosa sta succedendo in questo codice?
Non capisco cosa facciano bind
e apply
, o quale sarebbe il risultato finale di tutto questo. Ho cercato bind
e apply
sulla documentazione JS di Mozilla, ma la definizione "ufficiale" ha fatto ben poco per aiutarmi a capire cosa stanno facendo in questo contesto.
Apprezzo il tuo aiuto!