我在一个用户脚本中定义了以下MyClass
及其方法:
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();
这个脚本可以运行,myCallback()
方法在 GM_xmlhttpRequest 完成后被调用。
但是,它之所以能够工作,是因为 onload
回调引用了全局变量 myClassInstance
。如果我将 onload
回调更新为:
'onload': function (xhr) {
this.myCallback();
}
然后我收到(Chrome)错误:
Uncaught TypeError:Object [object DOMWindow]没有'myCallback'方法。
看起来this
在错误的上下文中被评估。
是否有一种方法可以调用myClassInstance
的myCallback()
方法,而不必使用全局变量?