Qualcosa mi ha sempre infastidito dal modo in cui eseguo la codifica orientata agli oggetti in Javascript. Quando c'è un callback, ho spesso voglia di fare riferimento all'oggetto che ha chiesto in origine la funzione, che mi porta a fare qualcosa di simile:Fare riferimento a "questo" all'interno di una javascript callback
MyClass.prototype.doSomething = function(obj, callback) {
var me = this; // ugh
obj.loadSomething(function(err, result) {
me.data = result; // ugh
callback(null, me);
});
}
Prima di tutto, creando la variabile aggiuntiva sempre puntuale sembrava ... eccessivo per me. Inoltre, mi chiedo se potrebbe finire per causare problemi (riferimenti circolari? Oggetti non-GCd?) Passando la variabile "me" al callback.
C'è un modo migliore per andare su questo? Questo approccio è malvagio?
'questo' non è una variabile. "questo" non può essere chiuso. L'approccio va bene. –
Il FUD su "male" ed "eccessivo" mi infastidisce. Va bene non gradire il boilerplate ma perché inventare problemi immaginari con esso? È necessario mantenere un riferimento agli stessi dati allegati, indipendentemente dall'approccio utilizzato, poiché la funzione interna non cambia. Se manterrai solo un riferimento al minor numero di dati necessario è qualcosa di cui l'interprete dovrebbe preoccuparsi. – millimoose
@millimoose Ben detto: non sono riuscito a trovare un modo per riassumere quell'ultima riga. (E ancora mi imbatto in "male" - beh, non "male", ma veramente terribile in un modo molto oggettivo - codice che usa 'nuova funzione (" .. ")' per "evitare problemi".) –