gpt4 book ai didi

javascript - 从回调中调用 javascript 对象方法

转载 作者:行者123 更新时间:2023-12-02 22:46:42 25 4
gpt4 key购买 nike

我在用户脚本中定义了以下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)错误:

Uncaught TypeError: Object [object DOMWindow] has no method 'myCallback'.

似乎this正在错误的上下文中进行评估。

有没有一种方法可以调用 myClassInstancemyCallback() 方法,而无需使用全局变量?

最佳答案

当正确的this在作用域内时,将其保存到变量中。然后您可以稍后引用:

 this.startRequest = function() {
var myself = this;
GM_xmlhttpRequest({
'method': 'GET',
'url': "http://www.google.com/",
'onload': function (xhr) {
myself.myCallback();
}
});
};

关于javascript - 从回调中调用 javascript 对象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6985288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com