defino la siguiente MyClass
y sus métodos en una secuencia de comandos de usuario:invocar un método de objeto javascript desde el interior de una devolución de llamada
function MyClass() {
this.myCallback = function() {
alert("MyClass.myCallback()");
};
this.startRequest = function() {
GM_xmlhttpRequest({
'method': 'GET',
'url': "http://www.google.com/",
'onload': function (xhr) {
myClassInstance.myCallback();
}
});
};
}
var myClassInstance = new MyClass();
myClassInstance.startRequest();
Este script funciona y el método myCallback()
es llamada una vez que los GM_xmlhttpRequest ultima.
Sin embargo, solo funciona porque la devolución de llamada onload
hace referencia a la variable global myClassInstance
. Si actualizo a la devolución de llamada onload
:
'onload': function (xhr) {
this.myCallback();
}
Luego llego el (Chrome) Error:
Uncaught TypeError: Object [object DOMWindow] has no method 'myCallback'.
Parece está siendo evaluado this
en el contexto equivocado.
¿Hay alguna manera de invocar el método myCallback()
de myClassInstance
sin tener que recurrir al uso de una variable global?
+1 golpéame. – JAAulde
+1 Acabas de terminar mi sesión de slamming de cabeza de una hora larga. Gracias. :) – Anthony