Qual è il modo corretto di conservare un riferimento javascript this
in un gestore di eventi memorizzato all'interno del prototipo dell'oggetto? Mi piacerebbe stare lontano dalla creazione di vars temporanei come '_questo' o 'quello' e non posso usare un framework come jQuery. Ho visto molte persone parlare dell'uso di una funzione "bind", ma non ero sicuro di come implementarlo nel mio scenario.Mantieni 'questo' riferimento nel gestore di eventi prototipo javascript
var Example = function(foo,bar){
this.foo = foo;
this.bar = bar;
};
Example.prototype.SetEvent = function(){
this.bar.onclick = this.ClickEvent;
};
Example.prototype.ClickEvent = function(){
console.log(this.foo); // logs undefined because 'this' is really 'this.bar'
};
I * odio * creando un riferimento a questo chiamato "that" (a la Crockford). Preferisco "instance" (a la Stefanov) o "me" (a la ExtJS) –
In realtà, odio creare riferimenti "this", non importa come vengono chiamati. Ma d'accordo, questo non è il miglior nome. –
Io uso 'self', ma ho trovato solo di recente che si tratta di un conflitto di nomi con una proprietà di primo livello in WebWorkers. Non che tu non possa avere lo stesso nome, ma confonde le cose. Inoltre, trovo che il nome 'that' sia esattamente l'opposto di 'this' – Matt