Ogni programmatore JavaScript ha familiarità con this "problema" (può essere considerato come una funzione, a seconda delle varie condizioni) - this è recentemente associato:
let foo = {
bar(){return this;}
};
let _bar = foo.bar;
_bar() === foo.bar(); // false;
_bar() valuta l'oggetto globale o undefined in base alla presenza di 'use strict' direttiva e foo.bar() valuta a foo .
Node.js ha una convenzione per fornire callback di "errore prima".
La mia domanda è - cosa dovrebbe essere impostato dalla libreria come this di callback? EventEmitter istanze impostate this nell'istanza dell'emettitore e sarebbe la soluzione più ovvia per me - ma non riuscivo a trovare le librerie popolari usando questo modello.
I metodi di istanze native Array usano pattern Array.prototype.method = function(fn, thisArg=null){} con l'ultimo argomento che è this context. Sembra essere una buona soluzione per i metodi a lunghezza costante, ma per le funzioni variad ha casi limite con this impostato su un'istanza di funzione.
Parlando fuori dal nodo, jQuery usa $.ajax({context: thisArg}) per impostare l'argomento this di callback.
Quindi quale sarebbe la soluzione migliore per es. classe che astrae i dettagli di implementazione dell'utente?
User.getUserByLogin('nick', function(err, user) {
// user is User instance
user.updateUser({name: 'new name'}, function(err){
// what SHOULD be 'this' here?
});
});