Hola gente del foro, tengo un problema con el ambito de la variable this, este es el script:
Código Javascript
:
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
}
}
Este script lo llamo con estas lineas:
Código Javascript
:
Ver originaldb = 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: censista {callback: function, id_censista: 0, nombre: "", fecha_ultima_sincronizacion: 0…}
y anda todo joya, pero cuando se ejecuta la llamada 2, la consola muestra esto:
Cita: Window {top: Window, window: Window, location: Location, external: Object, chrome: Object…}
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.
Como puedo hacer para arreglar esto?