Sto scrivendo un oggetto javascript che racchiude le richieste REST. Per ogni operazione sul server esiste un metodo che accetta i parametri per la richiesta e un callback che riceverà i risultati. (Il metodo invia un jQuery $.ajax()
-call e prepara le impostazioni per $.ajax()
.)
Ogni metodo ha la stessa struttura: chiama un metodo personalizzato ( this.post()
), imposta alcuni parametri a valori costanti (ad esempio il nome dell'operazione) e passa altri parametri (ad esempio i parametri di richiesta e il callback). Ad esempio:
service.GetMessages = function(startIndex, onDone) {
return this.post('GetMessages', startIndex, onDone);
}
Poiché molte di queste funzioni sono simili, possiamo usare Function.bind()
per generare una" funzione associata "invece di definire manualmente tutte queste funzioni. Ad esempio (con RestService
è la classe che sto scrivendo):
service.GetMessages = RestService.prototype.post.bind('GetMessages');
Lo svantaggio di questo approccio è che i parametri accettati da GetMessages
ora non sono documentati; Ad esempio, quando si scrivono manualmente funzioni che associano i parametri, come nel primo approccio, la dichiarazione mostra che le funzioni accettano startIndex
e onDone
come parametri, con bind
questa informazione è persa.
Come posso combinare evitando il codice ripetuto, come fatto tramite bind
mentre conservi la documentazione fornita dalla dichiarazione di funzione?