【发布时间】:2011-10-22 13:16:17
【问题描述】:
我在用户脚本中定义了以下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();
此脚本有效,一旦 GM_xmlhttpRequest 完成,myCallback() 方法就会被调用。
但是,它之所以有效,是因为 onload 回调引用了全局变量 myClassInstance。如果我将onload 回调更新为:
'onload': function (xhr) {
this.myCallback();
}
然后我得到(Chrome)错误:
未捕获的类型错误:对象 [object DOMWindow] 没有方法“myCallback”。
似乎this 在错误的上下文中被评估。
有没有办法调用myClassInstance 的myCallback() 方法而不必求助于使用全局变量?
【问题讨论】:
标签: javascript callback javascript-objects