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?
});
});