Código Javascript:
Este script lo llamo con estas lineas:Ver original
// Censistas censista = function(db, callback) { var self = this; self.load(db, callback); } censista.prototype = { "id_censista" : 0, "nombre" : "", "fecha_ultima_sincronizacion" : 0, "results" : [], "callback" : false, "onError" : function(err) { console.log(this); // Esta linea hace el log del objeto if(this.callback) this.callback(this); }, "load" : function(db, callback) { var self = this; self.callback = callback; self.onError(); // Llamada 1 para debug db.transaction(function(tx) { tx.executeSql('SELECT id_censista, nombre, fecha_ultima_sincronizacion FROM censista;', [], function(tx, results) { self.results = []; self.id_censista = 0; self.nombre = ""; self.fecha_ultima_sincronizacion = ""; if(results.rows.length > 0) { for(var nro=0; nro < results.rows.length; nro++) self.results[results.rows.item(nro).id_censista] = { "nombre" : results.rows.item(nro).nombre, "fecha_ultima_sincronizacion" : results.rows.item(nro).fecha_ultima_sincronizacion }; self.id_censista = results.rows.item(0).id_censista; self.nombre = results.rows.item(0).nombre; self.fecha_ultima_sincronizacion = results.rows.item(0).fecha_ultima_sincronizacion; } if(self.callback) self.callback(self); }, self.onError); // Llamada 2 }, self.onError); // Llamada 2 } }
Código Javascript:
Ver original
db = window.openDatabase("censo", "1.0", "Censo", 1000000); // 10Mb. var thisCensista = new censista(db, function(tCen) { alert("Llamada a callback"); });
El problema lo tengo en el metodo onError, donde esta el log, la llamada 1 muestra en consola:
Cita:
y anda todo joya, pero cuando se ejecuta la llamada 2, la consola muestra esto:censista {callback: function, id_censista: 0, nombre: "", fecha_ultima_sincronizacion: 0…}
Cita:
Es decir, que la variable this, al ser llamada de forma directa, tiene el valor del objeto (¿?) censista pero al ser llamada como callback en caso de error, adopta el valor de window.Window {top: Window, window: Window, location: Location, external: Object, chrome: Object…}
Como puedo hacer para arreglar esto?