gpt4 book ai didi

javascript - 表达式 'this.myMethod' [undefined] 的结果不是函数

转载 作者:行者123 更新时间:2023-11-30 13:34:04 25 4
gpt4 key购买 nike

对于经验丰富的网络开发人员来说,这可能是一个简单的问题......(我又开始了javascript所以)我写了这个类:

var FeedParser = function(url){
this._url = url;
}
FeedParser.prototype.myMethod = function(doc){
var elem = doc.getElementById('something');
//do something...
}
FeedParser.prototype.parse = function(){
var xmlRequest = new XMLHttpRequest();
xmlRequest.overrideMimeType("text/xml");
xmlRequest.open("GET", this._url, true);
xmlRequest.onreadystatechange = function () {
if (xmlRequest.readyState == 4) {
console.log("readyState");
this.myMethod(xmlRequest.responseXML); //ERROR HERE!
}
};
xmlRequest.send(null);
}

但是当我这样做的时候

var parser = new FeedParser("http://...");
parser.parse();

我明白了

Result of expression 'this.myMethod' [undefined] is not a function. 

我做错了什么?我用谷歌搜索,但找不到与我的案例相关的任何内容

最佳答案

您遇到范围问题。 readystatechange 函数中的 this 不是您的 FeedParser 对象。要获得对此的引用,请尝试:

var self = this;
xmlRequest.onreadystatechange = function(){
...
self.myMethod(...);
};

关于javascript - 表达式 'this.myMethod' [undefined] 的结果不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5619093/

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